帮我讲讲组成优于继承 高内聚低耦合 要例子

tryst 2006-07-05 08:23:08
需要哪个兄弟帮我详细讲解一下
...全文
447 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
treeroot 2006-07-05
  • 打赏
  • 举报
回复
up
nirvana_li 2006-07-05
  • 打赏
  • 举报
回复
楼主可以在《设计模式》中找到很多的例子。
nirvana_li 2006-07-05
  • 打赏
  • 举报
回复
类继承允许你根据其他类的实现来定义一个类的实现。这种通过生成子类的复用通常被称为白箱复用(white-box reuse)。术语"白箱"是相对可视性而言:在继承方式中,父类的内部细节对子类可见。实际上,这是一种较高的耦合度。

  对象组合是类继承之外的另一种复用选择。新的更复杂的功能可以通过组合对象来获得。对象组合要求对象具有良好定义的接口。这种复用风格被称为黑箱复用(black-box reuse),因为被组合的对象的内部细节是不可见的。对象只以"黑箱"的形式出现。

  继承和组合各有优缺点。类继承是在编译时静态定义的,且可直接使用,类继承可以较方便地改变父类的实现。但是类继承也有一些不足之处。首先,因为继承在编译时刻就定义了,所以无法在运行时刻改变从父类继承的实现。更糟的是,父类通常至少定义了子类的部分行为,父类的任何改变都可能影响子类的行为。如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。

  对象组合是通过获得对其他对象的引用而在运行时刻动态定义的。由于组合要求对象具有良好定义的接口,而且,对象只能通过接口访问,所以我们并不破坏封装性;只要类型一致,运行时刻还可以用一个对象来替代另一个对象;更进一步,因为对象的实现是基于接口写的,所以实现上存在较少的依赖关系。

  优先使用对象组合有助于保持每个类被封装,并且只集中完成单个任务。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物(这正是滥用继承的后果)。另一方面,基于对象组合的设计会有更多的对象(但只有较少的类),且系统的行为将依赖于对象间的关系而不是被定义在某个类中。
wmzsl 2006-07-05
  • 打赏
  • 举报
回复
组合要比继承灵活,所以先用组合! 例如有一个A类一个B类!
在B类里面你new了一个A类,并且A类对你的B类非常重要也可以说是不可缺少的这个就是组合。
如果继承就简单了吧 B extends A。

高聚合就是说一个类要包含多个功能
底耦合就是说这个类最好少依赖其他的类,最完美就是完全独立。就这么简单
tryst 2006-07-05
  • 打赏
  • 举报
回复
看样子我比你知道的多啊哈哈
kevinliuu 2006-07-05
  • 打赏
  • 举报
回复
设计模式,架构的东东
hoszone 2006-07-05
  • 打赏
  • 举报
回复
《设计模式》我还没看呢

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧