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

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

 
阅读更多

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

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

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

 

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

分享到:
评论

相关推荐

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

    其中,“组合优于继承”是一条广为流传的原则,意味着在设计软件时,我们应该优先考虑使用组合(Composition)而不是继承(Inheritance)。这条原则的提出主要是为了解决继承带来的潜在问题,如代码的可维护性、可...

    CSS之少用继承,多用组合

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

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

    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 练习:接口表示一种能力...

    99丨总结回顾:在实际软件开发中常用的设计思想、原则和模式1

    同时,多用组合少用继承可以增加代码的灵活性和可扩展性,因为组合可以动态改变对象的结构,而继承可能导致紧耦合。 设计原则是评价代码质量的重要标准,如SOLID原则、DRY(Don't Repeat Yourself)原则、KISS...

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

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

    实验报告2

    这些设计模式的应用旨在实现面向对象编程的核心原则,如封装变化、多用组合、少用继承以及促进交互对象间的松耦合。 1. **观察者模式**:观察者模式是一种行为设计模式,允许你定义一个订阅机制,可以在对象状态...

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

    面向对象设计原则包括开闭原则(对扩展开放,对修改关闭)、依赖倒转原则(依赖于抽象而非具体实现)、多用组合少用继承原则(降低耦合度)、高内聚低耦合原则等。这些原则指导我们写出更高质量的代码。 观察者模式...

    HeadFirst设计模式-大神推荐

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

    Java开发模式实例

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

    Head.First 设计模式学习笔记.pdf

    - **多用组合,少用继承**:“多用组合,少用继承。” 继承虽然能简化代码,但也可能导致复杂的类层次结构,增加维护成本。而组合则能够更好地应对变化,提供更多的灵活性。 #### 三、具体设计模式 - **策略模式**...

    设计模式综合训练报告

    **多用组合少用继承**: - 使用组合而非继承来扩展功能。例如,通过组合不同的装饰器来构建不同样式的销售票据,而不是通过继承的方式。 #### 四、源程序简单说明 在提供的部分源代码中,可以看到一个名为 `...

    设计模式汇总(含思维导图)

    3. 多用组合少用继承:组合和聚合能增加系统的灵活性。 4. 高内聚低耦合原则:提高模块的独立性,降低模块间的耦合度。 5. 单一职责原则:一个类应该仅有一个引起它变化的原因。 6. 里氏替换原则:任何基类可以出现...

    Css 模块化编码技巧

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

    HeadFirst设计模式

    3. **多用组合,少用继承**,因为继承可能会破坏封装,导致子类对父类的实现过于依赖,而组合则允许更动态的结构和更好的解耦。 **图书销售问题**是一个很好的策略模式应用实例。不同类型的书籍有不同的折扣策略,...

    [设计模式]总结

    3. **多用组合,少用继承**:将变化频繁的功能封装为独立的行为类,通过组合而非继承引入到主类中,以减少代码的耦合度和提高复用性。 4. **松散耦合**:确保类之间的依赖关系最小化,有助于系统的扩展性和可维护性...

    C++语言编程规范pdf,c++语言编程规范 华为,C,C++源码.zip

    8. **多态和继承**:合理使用多态和继承,理解"多用组合,少用继承"的原则,避免过多的继承层次。 9. **代码风格**:遵循统一的代码风格,如空格、缩进和对齐。使用代码格式化工具可以自动保持一致性。 10. **测试...

    designPattern

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

Global site tag (gtag.js) - Google Analytics