锁定老帖子 主题:实现DDD装备模型
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-19
经过最近潜心研究,基于上次说过的草根想法 对象,你喜欢极品装备吗? 实现了一个简单的装备模式。 然后写了一个弱弱的实现框架,目前肯定无法投入到开发中使用,只是想证明这条路可以走走看~~~ 框架也没名字,临时叫OMM(简单好记),下面让各位看一下使用方法和HelloWorld示例。
首先,需要一个POJO,这次用User,他有中英文两种名字。在中国叫他的中文名,在外国叫英文名(废话)。 注意:需要jdk5.0+ java 代码
然后,我们要制作两件"HelloWorld"要用的装备,让User可以say hello,一个说英语,一个说汉语的。 java 代码
java 代码
大家可以发现,在接口部分使用了jdk5的泛型类,实现Equip接口的两个方法。Equip接口的装备只有一种动作Method! 然后,我们再来制作一件极品装备(一般来说,在游戏里普通装备是白色的名字,只有一种属性功能,而极品装备一般是 java 代码
极品装备比较特殊,所以需要继承于一个 极品类,这样才能属性极品装备家族,里面有两个方法,一个是默认方法,一个是 到现在,我们的User装备已经准备完成了,下面要定义套装了。套装是为了适合不用的场景与环境搭配的。 java 代码
java 代码
套装中的装备绑定的名称,就是对象最终获得的动作action方法。 好了准备完毕了,看一看结构,是这样的树: 这里没用di容器,因为还有好多地方没有做优化,尤其是在众多装备的管理方面,将来对象的原子动作如果很多,那这里就会 好了,下面看一下如何让他们工作,并让User say hello! java 代码
我们来看看输出结果: chuser info:User [Nobita] equiped [中国] 测试: 修改再测试: 未定义方法: 这样使用对象,其实是很大程度的改变了原有的设计思想以及开发方法,把问题往下抛,让对象自管理,至少他能管好自己。 还是,先谢谢了,看完挺累的~~休息眼睛。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-19
总的来说,个人感觉这个模型与贫血、充血不是一个系列。
我不主张大家都用这种模式,这只是一个雏形~~~~~ 请大家不要争论有关各种模型的选择问题! 大家按喜好随意选择,随心所欲。 |
|
返回顶楼 | |
发表时间:2007-05-20
粘贴代码的标签总是把<User>过滤掉,好多使用泛型的地方都
被pass掉了,我把代码复制到google文件了 可以到这看http://docs.google.com/View?docid=dcpd9tvz_35hffznj 或者下载附件看代码。 |
|
返回顶楼 | |
发表时间:2007-05-20
其实这种模式也不算什么了!搞不懂为什么总有喜欢给一些东西取那些大词,我刚看这个帖子的时候都吓了一跳!什么装备模型阿!进来一看原来是这个哦!
其实很多通用系统中都习惯采用这种方式!把组件当成装备!用过plugin的方式挂载在Adaptor上! |
|
返回顶楼 | |
发表时间:2007-05-20
呵呵,不是什么大词啊,喜欢玩网络游戏的都知道,装备很重要
也是平时听的最多的词汇了,用这个词是为了其他人容易理解。 我经验不足,没有做过很多通用系统~你说的这个跟我现在相的好像 是一样的,但是这不是我全部的思路。我表达的思想是在企业应用中 在特定的场景,使用切面管理所用需要的plugin,当场景切换时 也能随时换成适合场景的一套plugin,其实我用装备的意思就是主 要表达“套装”的概念,上一帖子说过,其实主体思路是对象包装。 不知道这样说diz大侠能体谅我用词的原因了吧,不是我想用什么大词 相信您能理解。其实现在在管理装备与套装的部分还没有完善,希望 大侠不吝赐教,小弟感激不尽。 |
|
返回顶楼 | |
发表时间:2007-05-21
hunter_z 写道 你的思路我明白了,一套框架根据不同的需求进行切换 恩,我的装备模式就是这个意思!至于这个框架,周末已经改了两次,发现他应用的场景 还很多呢,这里只实现了PojoPack类,对Domain封装。 后来发现我的ObjectPack接口可以扩展service或者静态 方法。 用Db4o的时候有位朋友写了一个泛型通用的DAO模板, 很像那个daozero,然后我在它的基础上进行包装,实现 扩展的模糊条件查询NQ,很爽。 然后继续思考,发现在Action或者在jsp中可以直接使用 包装对象,免去Service接口了,为通用的系统服务或者 静态方法做一个硬性装备,在ObjectPack实例话的时候 就装载(宠物?坐骑?家族召唤兽?地图兵器?),这样 一个最外层的ObjectPack对象就可以完成所有业务逻辑了 继续思考中......... |
|
返回顶楼 | |
浏览 7959 次