`
Tonyguxu
  • 浏览: 271992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么多用组合,少用继承?

 
阅读更多

http://zyjwy02.iteye.com/blog/232838

继承组合 都是实现类重用 的手段,何时用继承何时用组合?

继承表示“is a”的关系,继承是对已有的类做一番改造,以此获得一个特殊的版本。即将一个较为抽象的类改造成能适用于某些特定需求的类。组合表示“has a”的关系,如果两个类之间有明显的整体/部分的关系,适合用组合,比如People和Arm类。将Arm类作为People类的一个私有属性。

 

面对扩展问题时,如果选择使用继承,则要考虑除了需要重写关注的方法外,是否还要看看有些方法也被继承下来了,而这些方法如果不重写的话是有害的。如果使用组合则可以避免这种问题。

分享到:
评论

相关推荐

    10丨理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?1

    2019-11-25 王争设计模式之美进入课程讲述:冯永吉时长 10:51大小 9.95M在面向对象编程中,有一条非常经典的设计原则,那就是:组合优于继承,多用

    CSS之少用继承,多用组合

    继承是 css中经常要用到的技术,好处是可以尽量让页面的代码减少重复利用,但是随时项目...其实,css代码和普通程序代码在编写的时候有很多的相似之处,下面我们就用试试用组合的方式是不是能更好的解决这个问题。

    java 策略模式demo

    这是一个Java 策略模式的demo 符合封装变化 针对接口编程 多用组合少用继承的OO原则

    关于鸭子的问题 策略模式(Strategy Model)编程 重要 思想 理念

     在类中应多用组合,少用继承。 Joe的公司设计了一套相当成功的模拟鸭子游戏:SimUDuck。游戏中将会出现各种鸭子,一边游泳戏水,一边呱呱叫。系统设计要求采用标准OO技术。 Joe的应对: 设计一个鸭子超类(抽象...

    《软件秘笈:设计模式那点事》郑阿奇(编者) -电子工业出版社

    1.3.3 多用组合少用继承 1.3.4 “开-闭”原则 1.4 设计模式概述 1.4.1 什么是设计模式 1.4.2 为什么需要设计模式 1.4.3 如何正确应用设计模式 1.5 设计模式的分类 1.5.1 创建型模式 1.5.2 结构型模式 1.5.3...

    JAVA面向对象详细资料

    3、多用组合,少用继承(包含实现) 54 4、为了交互对象之间的松耦合设计而努力 54 5、类应该对扩展开放,对修改关闭 54 6、依赖倒置,要依赖抽象,不要依赖具体类 54 36 练习:超市收银 54 37 练习:接口表示一种能力...

    类工厂模式1

    1. 面向接口编程,而非实现 2. 多用组合,而非继承 3. 封装变化

    12种常用设计模式C#代码示例

    3、多用组合,少用继承。 4、为了交互对象之间的送耦合设计而努力。 5、类应该对扩展开发,对修改关闭。 6、依赖倒置原则:要依赖抽象,不要依赖具体类。 7、最少知识原则:只和你的密友谈话。 1,策略模式:定义...

    HeadFirst设计模式-大神推荐

    设计模式,开发进阶读物。 1.封装变化。 2.多用组合,少用继承 3.针对接口编程,不针对实现编程 4.为交互对象之间的松耦合设计而努力 5.................................

    Java开发模式实例

    设计模式原则 1.找出应用中可能需要变化之处,把它们独立起来,不要和那些不需要变化的代码混在一起。 2.针对接口编程,而不是针对...3.多用组合,少用继承 4.对扩展开放,对修改关闭 5.为了交互对象之间的松耦合设计

    java设计模式选择题复习题.doc

    开闭原则、面向抽象的原则(依赖倒转原则)、多用组合少用继承原则、高内聚- 低耦合原则。 观察者模式的推拉有什么不同?使用场景 推,具体主题将变化后的数据全部交给具体观察者。场景:当具体主题认为具体观察者 ...

    Css 模块化编码技巧

    Css的模块化,我们可以理解成(抑或本身就是)OOP思想, 重用性、灵活性、可扩展性便是它终极的目标, "类"便是它的核心, OOP的多用组合少用继承一样是它的基本原则. Css模块化是一个新颖高效的Css编码方式, 若有接触过...

    designPattern

    多用组合,少用继承 策略模式(Strategy Pattern) 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 观察者模式(Observer Pattern) 出版者 + 订阅者 = ...

    decorator:装饰者模式

    装饰工 装饰者模式 OO基础: 多态,封装,继承,抽象 OO原则: 封装变化 多用组合,少用继承 针对接口编程而非针对抽象编程 为交互对象之间的松替换设计而努力 对扩张开放,对修改关闭

    编写高质量代码-Web前端开发修炼之道.azw3

    4.4.3 挂多个class还是新建class——多用组合,少用继承 4.4.4 如何处理上下margin 4.5 低权重原则——避免滥用子选择器 4.6 CSS sprite 4.7 CSS的常见问题 4.7.1 CSS的编码风格 4.7.2 id和class 4.7.3 CSS ...

    java餐饮管理系统源码6-design-patterns:设计模式

    少用继承 :star:'has a' is better than 'is a' "有一个"关系相当有趣, 每一只鸭子都有一个fly behavior 和 quack behavior 好将飞行和呱呱叫行为委托给他们处理 2. 观察者模式() 观察者模式定义了对象之间一对多的...

    java设计模式源码-head-first-design-patterns-Java:HeadFirst设计模式源码JAVA版

    多用组合,少用继承。 为了交互对象之间的松耦合设计而努力。 类应该对扩展开放,对修改关闭。 最少知识原则:只和你的密友谈话。 这是什么意思?当你正在设计一个系统,不管是任何对象,你都要注意它所交互的类有...

    java原生黄瓜影视源码-study-design-patterns:设计模式学习

    多用组合,少用继承 4. 为了交互对象之间的松耦合设计而努力 松耦合的设计之所以能让我们建立有弹性的OO系统,能够应对变化,是因为对象之间的相互依赖降到了最低。 5. 开闭原则 类应该对扩展开放,对修改关闭 目标...

Global site tag (gtag.js) - Google Analytics