关于该思想的实现,请参照 实现对象装备模式
本来想说很多客套话的,但拿捏不好语气,该帖子主要讨论一个草根想法。
大家一看就知道我是新鸟一只,只是在这混了好久,第一次发言,想让大牛们给我指导一下,我的收获会很大。
先谢谢了,请尽量看完。(如时间不充足,请看红色部分!)
草根来源:
场景——一个自运营的门户网站
系统——考虑了很久,打算用DWR+MeshCMS+guice+Db4o,轻轻轻量级。。。。
思路——使用基于文件的内容管理,生成静态的内容数据页,动态交互使用ServerPush,完全OO模型,直接对象持久
问题——使用对象数据库,那我的领域模型怎么工作,要DAO合适吗?魔鬼告诉我,db4o的session太好用了,耦合吧-_-
思考——在学习google的guice期间,当时正好看到方法注入,本想跳过,一般我不用,但突然想到了,既然db4o不适合
存储复杂业务的对象,那么我在对象取出时给他注入他将要用到的业务逻辑方法。。。。。Service轻松了好多,好像更
OO了。。。。于是,请看下文(如时间不充足,请看红色部分!)!
关键字:装备模式、套装模式
==================================================
今天偶然之间又看了JavaEye大牛的文章,就是分析DDD模型的3种思想实现。
我联想到,在两年以前未接触Hibernate、iBatis等ORM框架前的一个项目,寿光一散热器公司的
工程车间管理系统,里面从工艺管理、产品周期管理、人员管理到订单管理一气呵成。那时的我
无独立开发经验,自己设计摸索了一个月,也在车间里转悠了一个月,虽然坚定了OO的设计思路
还有Java的设计模式以及数据结构Java版,但最终我仍然使用C#开发的,因为是桌面应用么~~
我把每种管理的原子数据结构分离出来,在不符合Bean规范下做了简单的PO,当时遇到的问题就是
应该用一个上层容器管理这些OOD出来的模型对象,还是直接在这些对象里写入逻辑让控制层方便
运算(其实运算也不方便),最后按这种结构做了几个试验,发现效果可以,效率不错,并且形成
一种规范,之后的每种对象都如此管理,在类中写入自身动作的持久业务。这里呢,持久我都是用
静态方法,其他业务都是跟属性并存,我认为这样,符合老师教我的OO设计,一个对象如果只有数据
那应该叫C中的结构TYPE,对象要能自己描述自己,自己应该有自己独立的原子性动作,这里我也坚决
认为团队动作的化应该由上层对象管理,因为上层对象也是被OOD出来的。最后项目完成了,使用上
问题较少,前面一个月的分析设计没有白做哦!但最大的问题就是,当厂长提到许多小细节的优化或者
流程上的改进时,我发现很难插手修改,难以想像修改后会有多少异常。。。。。
其实,那时候哪懂DDD啊,只是看着.Net的ADO好用,然后经理了过渡设计,在脑子里重构了多少遍
之后才动手,已经发挥我的极限能力了。不过我想说的是第3种贫血模型就是耦合了模型、DAO的方式
仍然使用于某些场景,是可行的而且是高效的,设计1月后,我自己用了10天编码就全部完成了,包括报表
也做好了。
回忆了许多,其实想说,如今了解了DDD、ORM、重构与设计之后,反而被约束了许多,很多想法还没实践
就被已有的知识为“创意”判了死刑。现在又有一创意,在脑中萌发,我想改变他的命运所以我没有继续想,
我要先写下来,人的思维和搜索引擎总是太高级,太快,太厉害了,但总是会忘记和遗漏某些不经意的小
细节,其实这也是电脑目前不可能做到的一件事情。
OO的特性里,继承、封装、多态,我又联想到一个名词,那就是包装。与其说DDD中有贫血模型,不如说
是裸体模型,他没有穿任何衣服、装备、宠物、家族等等(扯到网络游戏里了)。不过事实就是如此,我们
的生活中不可能离开这些,那在编程的原始社会,从低级到高级,好像人会站立行走了,从过程到OO好像
人们有语言和沟通了,越来越接近自然的法则就是,我们的对象要穿衣服了,不光要有衣服,还要有手套、
工具、坐骑、家(持久层?!)。玩过变装类游戏角色的人知道,当他们换衣服时等于换了一种角色
换了一种特有属性,唯一不同的就是基础属性,他的动作和专注点发生了变化,那么,我们的软件中,每个
对象好像不是一种角色,只完成单一的任务,而是在不同的场景,使用不同的服务,发生不同的动作,造成
不同的变化,那么每一套对象之外的动作、属性、状态是不是像装备一样包装着这个对象呢?!是不是可以
给对象准备好一套装备,在他要去工作或者执行任务以前把他武装起来而不是裸体上阵呢?我想问问对象,
你喜欢极品装备吗? 当然他回答不了我,但我列了几个我自以为的可选答案:
A.无所谓(仍然保持原始的性感美丽)
B.喜欢(向往现代文明)
C.贼喜欢(迫切的愿望说明他厌恶了裸奔的日子)
D.讨厌,就是喜欢暴露 (。。。。。。。你男的女的?不对,公的母的?还不对,雄的雌的?反正变态)
这只是一个雏形,一种想法和冲动,我没有脑力和能力继续实践他,至少目前还没有,要休息下脑子才可以,
而且我的知识结构混乱,也不敢继续想,但是直接告诉我这个道路在黑暗中有一思光明,好像从小到大我的
这种感觉总是很准。还有一点想说的是,程序员的性格和兴趣不同,就好像游戏里的不同职业团队里的不同
角色,总是可以完成任务,不在乎哪中道路达到目标。只是我感觉周围有像我一样,那种路都不想选择而又
想要到达目的地的人,仍然在继续找寻一个新的道路(“世上本没有路,走的人多了便成了路”)。
最近根据这个思路衍生了一个使用DDD的套装模式,现正在写一个简单的实现,等测试完成后尽快跟大家分享。
分享到:
相关推荐
看看他们的五“福”,有你喜欢的吗?
标题中的“所以你喜欢写样板吗?”暗示了我们讨论的主题是关于代码模板的自动化,特别是针对减少重复性工作和提高开发效率。描述中的“为什么要浪费大量的精力来编写可以更准确,更高效地自动化的样板文件呢?”...
对于介于和之间的东西 这可能不是最佳的深度学习框架,但它是一个深度学习框架。 由于其极其简单,因此它旨在成为添加新加速器的最简单框架,同时支持推理和训练。... 我们正在努力支持Apple Neural Engine。...
很漂亮的英伦风格的图片,做头像,贴图都很好!
LBS推广,你喜欢这样的小程序吗?
在喜欢的社交媒体网站上“喜欢”某些内容时,在后台自动播放有趣的声音片段。 一旦安装,就坐下来享受吧! 支持的网站:-Instagram-Twitter-即将推出! 支持语言:English
这篇名为“幼儿园中班健康教案:早餐你喜欢吃什么?”的文档,旨在帮助孩子们建立良好的早餐习惯,同时提高他们的语言表达能力。教案的设计充分考虑了儿童的认知发展和兴趣点,通过互动的教学方式,让孩子们在轻松...
【教案主题】:中班健康教案——早餐 你喜欢吃什么? 【教案目标】: 1. 提升幼儿对自己早餐选择的关注度,培养健康的早餐习惯。 2. 培养幼儿使用“可能”“或者”等词汇表达自己的观点和想象。 【教案准备】: 1....
【教案名称】:幼儿园中班健康教案——《早餐你喜欢吃什么?》 【教案目标】: 1. 培养幼儿关注个人早餐摄入,促进他们养成健康的早餐习惯,认识到早餐对身体健康的重要性。 2. 训练幼儿的语言表达能力,学会使用...
你喜欢Compiler Explorer吗? 你喜欢命令行吗? 好吧,这是给您的工具! 安装cce使用有效的rust工具链(我喜欢rustup.rs),您可以直接装载cce-命令行编译器浏览器| 你喜欢Compiler Explorer吗? 你喜欢命令行吗? ...
蒜蓉面包 新鲜出炉。注意:由于我不同意Discord的隐私政策,因此我停止了此工作。· 目录 关于该项目 单击邀请大蒜面包到您的服务器 随着我的私有Discord服务器的成员数量逐渐增加,我不得不面对冷酷的事实……仍然...
你喜欢繁体字吗?那么请你试试这一款最新软件吧,很好用的。
计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...
你喜欢重力吗?您考虑声音的效用吗?有些使用physic的Arduino简单项目"的主题,显然是一个将物理学原理应用于实际项目,特别是与Arduino相关的实践探索。Arduino是一种开源电子原型平台,常用于各种创意项目,如自动...
迈巴赫S480怎样改装?30多W的方案,有你喜欢的配置吗
一个好玩有意思的页面,“我喜欢你,你喜欢我吗?”
选项A翻译为"你喜欢吃鱼吗?- 是的,喜欢。",而选项B则是"你喜欢吃鱼吗?- 不,不喜欢。",显然,B选项是正确答案,因为它准确地反映了原句的意思。 综合以上内容,这套练习旨在帮助一年级的学生巩固和扩展他们的...
在电脑上打开一个窗口,问“你喜欢我吗?”,下面有两个选项,只要想点击“不喜欢”,窗口会瞬间躲开,躲到另外一个位置,只能选择“喜欢”! 文件中包括python源代码、打包好的.exe文件(在windows电脑上可直接...
哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩·猜你喜欢浏览器插件1.13哔哩哔哩...