面向对象:我看所谓的充血模型和贫血模型_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 面向对象:我看所谓的充血模型和贫血模型

面向对象:我看所谓的充血模型和贫血模型

 2013/7/17 21:14:03  windshome  程序员俱乐部  我要评论(0)
  • 摘要:在网上看到这样一段关于对象设计的说法:充血模型其实很简单,就是面向对象设计的本质:“一个对象是拥有状态和行为的”,比如说一个人,他眼睛什么样鼻子什么样这就是状态,人可以去打游戏或是写程序,这就是行为。为什么要有一个“人Manager”这样的东西存在去帮人“打游戏”呢?举个简单的J2EE的例子,设计一个与用户(User)相关的功能,传统的设计一般是:类:User+UserManager保存用户调用:userManager.save(Useruser);充血的设计则可能会是:类
  • 标签:

?

?

? 在网上看到这样一段关于对象设计的说法: 充血模型其实很简单,就是面向对象设计的本质:“一个对象是拥有状态和行为的”,比如说一个人,他眼睛什么样鼻子什么样这就是状态,人可以去打游戏或是写程序,这就是行为。为什么要有一个“人Manager”这样的东西存在去帮人“打游戏”呢?

举个简单的J2EE例子,设计一个与用户(User)相关的功能,传统的设计一般是:
类:User+UserManager
保存用户调用:userManager.save(User user);
充血的设计则可能会是:
类:User
保存用户调用:user.save();
——User有一个行为是:保存它自己 ? ? User保存它自己,这是什么逻辑呢?我觉得非常奇怪。 ? 用户用户可以保存自己,那么用户也可以删除自己了,这个和面向对象的最初思路就不一致了,因为在“用例”阶段,就没有用户“删除自己”的用例。 ? 所以我的意见,就是一个“行为”到底放在哪里,肯定是要由用例决定的。 ? “人Manager”是一个不伦不类的概念,人自己“删除自己”更是荒谬。 ? 我的理解: ? “保存”和“删除”本身是系统提供的一个功能,它的宾语,或者说“作用对象”是User,而主语不是,面向对象的概念,封装、多态是手段,本质和神髓是用真实世界考虑问题的方法来分析来设计,那么,分清主语和宾语就是必须的。 ? 所以,所谓的“充血模型”、“贫血模型”只是设计领域里的概念,而且是纯粹设计和实现层面的概念,实际上意义和价值都很低的。 ? 我是一个比较质朴的程序员和设计师,有些偏执和执拗,但是我一般不会屈从于任何权威和流行的东西,我有我自己的方法论和价值取舍。我一向喜欢从事务的最最本质来分析问题,评判优劣取舍。所以,我的观点,可能很多人看了觉得怪怪的。其实我也是一家之言,一孔之见,写出来,希望能够整理自己设计方面的思路和心得、希望能给别人一些不同的观点和思路吧。
上一篇: 第三次总结(构造方法及方法重载) 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名