成都游戏Coder,记录游戏开发过程的笔记和心得!
1)但是如果function函数的某个操作是free obj时,通过todo恐怕不合适。2)可能有些子类型不关心不必要的接口但是也得写。3)如果todo包含多个操作,则会让之类变得很庞大。 2. visitor模式. 那么同时得提供下面的操作接口:
1)同样多少Base子类得些多少 visit接口。 2)还得倚靠多态类型转换调用特定的visit接口,因为obj还是Base* 类型,还得转换具体的类型。 3.把所有操作绑定到类身上: 1)定义针对每个Base子类操纵接口类 2)Base所有子类型的保存需要操纵对象. Base类定义:
定义2子类:
定义操作类型:
现在function接口变为下面了
调用方式:
最后发现最后一个有点像Listener模式,-_-|||总结完毕:代码:/Files/expter/test.rar
posted on 2011-02-24 23:23 expter 阅读(2175) 评论(4) 编辑 收藏 引用 所属分类: 其他学习笔记 、工作笔记 、生活笔记 、算法与数据结构
我觉得就为了归纳一些共同接口,这样子做有点过了。不妨考虑在类设计时就将功能分出来。与其想尽办法保持类接口的数量不膨胀,倒不如让类的功能单一。简单的继承结构就够了。 回复 更多评论
我更倾向使用traits 和 基于tag的分派来实现这种效果,会简洁很多。 回复 更多评论
可以在Base类里定义一个专门用于访问子类特定方法的抽象方法,如:virtual void * do_special(void * param) = 0;在各个子类的实现里,不管其特定方法是什么,他们自己都可以通过实现do_special,并在其中调用那些方法而达到目的。 回复 更多评论
@abettor 就是第一种方法。 回复 更多评论
Powered by: C++博客 Copyright © expter