随笔 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,请移步
叫我abc

常用链接

留言簿(12)

随笔分类

我的博客

搜索

  •  

积分与排名

  • 积分 - 301916
  • 排名 - 84

最新评论

阅读排行榜

最近写课程需求的时候,掌握了一些东西。尽量把胶合物集中起来,放在一个模块中,而不是零碎的分布在各处,会让代码看起来不那么刺眼。
举手头上的project。
有4个类,分别是CPlayer,IMonster,IDevice,ITerrainPortion。这4个类代表了整个游戏逻辑(规则),逻辑的执行通过两两相交碰撞来驱动。
在最初的设计中,每一个类都有接口对待其余3个类,也就是每一个类都知道规则的一部分。比如代码:
CPlayer::collid(UserDefineObj &obj)
{
switch (obj.getType())
{
case MONSTER:
IMonster 
*pm = dynamic_castIMonster*>(&obj);
do some work 1;
break;
case DEVICE:

case  
}

}
根据类型来向下转换是很烦人的,并且不同类型所用到的逻辑代码也大有不同。虽然说很想提供那么一个最高接口,给出统一的部署,省却转换,但是统一的部署首先是相当难做到,并且使得每个类的的有些行为的语意有些畸形。同时,统一部署之下,只是让接口看起来统一,但接口之下的实现确会更复杂。(完全说不明白)
按照这种分布式的胶合,增加了各个类型之间的耦合,因为每个类型都要区别其他类型,并执行恰当的代码,就先要知道其他类型的存在。
后来想到的集中胶合,由一个类,了解所有存在的类型,以及各个类型之间的规则,然后在实现中,根据两两的类型选择合适的处理函数,驱动逻辑。而其他类型本身,只要提供该类驱动逻辑时需要的方法就够了。
。。。。
posted on 2006-09-17 19:58 LOGOS 阅读(646) 评论(4)  编辑 收藏 引用

FeedBack:
# re: 杂乱的设计念头 2006-09-17 21:08 万连文
如果基于COM做,如果想实现一个顶层对象以便查询所有需要接口,可以参考实现IServiceProvider接口进行服务派送  回复  更多评论
  
# re: 杂乱的设计念头 2006-09-19 12:48 lunny
除了main中,其它的类应该都只知道接口  回复  更多评论
  
# re: 杂乱的设计念头 2006-09-20 14:20 Wei
Try *Abstract Factory* or "Strategy" patterns  回复  更多评论
  
# re: 杂乱的设计念头 2006-09-20 17:10 LOGOS
其实最终确定下来的念头是,要做一个collide AI模块,把所有麻烦的东西集中到一起。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理