`
ITCheng
  • 浏览: 76807 次
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象的设计原则_组合优先于继承

OO 
阅读更多

组合

  • 通过创建一个由其他对象组合的对象来获得新功能的重用方法
  • 新功能的获得是通过调用组合对象的功能实现的
  • 有时又叫聚合
  • 例如:
    • 一个对象拥有或者对另外一个对象负责并且两个对象有相同的生命周期。(GOF)
    • 一个对象包含另一个对象集合
    • 被包含对象对其他对象是不可见的并且只能从包含它的对象中访问的特殊组合形式

组合的优缺点

  • 优点
    • 被包含对象通过包含他们的类来访问
    • 黑盒重用,因为被包含对象的内部细节是不可见的
    • 很好的封装
    • 每个类专注于一个任务
    • 通过获得和被包含对象的类型相同的对象引用,可以在运行时动态定义组合的方式
  • 缺点
    • 结果系统可能会包含更多的对象
    • 为了使组合时可以使用不同的对象,必须小心的定义接口

继承

  • 通过扩展已实现的对象来获得新功能的重用方法
  • 基类有用通用的属性和方法
  • 子类提供更多的属性和方法来扩展基类

继承的优缺点

  • 优点
    • 新的实现很容易,因为大部分是继承而来的
    • 很容易修改和扩展已有的实现
  • 缺点
    • 打破了封装,因为基类向子类暴露了实现细节
    • 白盒重用,因为基类的内部细节通常对子类是可见的
    • 当父类的实现改变时可能要相应的对子类做出改变
    • 不能在运行时改变由父类继承来的实现

由此可见,组合比继承具有更大的灵活性和更稳定的结构,一般情况下应该优先考虑组合。只有当下列条件满足时才考虑使用继承:

  • 子类是一种特殊的类型,而不只是父类的一个角色
  • 子类的实例不需要变成另一个类的对象
  • 子类扩展,而不是覆盖或者使父类的功能失效
分享到:
评论

相关推荐

    面向对象设计原则.ppt

    面向对象设计原则是软件开发中至关重要的一环,它关乎到代码的可维护性、扩展性和复用性。本文将深入探讨这些原则,并结合实例来解释它们的重要性。 首先,我们需要理解面向对象不仅仅是编程语言中的概念,如封装、...

    C++设计模式课件2_面向对象设计原则.pdf

    ### C++设计模式课件2_面向对象设计原则 #### 面向对象设计原则概述 面向对象设计原则是软件工程领域中为了提高代码质量、增强软件系统的可维护性和可扩展性而制定的一系列指导原则。这些原则有助于开发人员更好地...

    面向对象设计原则.pdf

    本文将深入探讨“面向对象设计原则.pdf”文档中提及的关键知识点,包括面向对象设计的基本法则,以及组合与继承这两种重要的设计模式。 ### 组合优先于继承 文档中的第一条法则强调了“优先使用组合,而非继承”。...

    面向对象七大原则

    面向对象编程的七大原则是指在面向对象设计中所遵循的七个基本原则,它们是:开闭原则、依赖倒转原则、单一职责原则、接口隔离原则、迪米特法则、里氏替换原则和组合优于继承原则。 1. 开闭原则(Open-Closed ...

    Java面向对象的设计原则

    总的来说,Java面向对象设计原则中的“优先使用对象组合而非类继承”鼓励我们避免过度使用继承,而是通过组合来构建灵活、解耦的系统。在实际开发中,我们需要根据具体场景和需求,明智地选择和应用这两种机制,以...

    java面向对象设计的六大原则

    ### Java面向对象设计的六大原则 在Java编程中,面向对象设计的原则对于构建高质量、可维护、可扩展的软件系统至关重要。以下将详细介绍面向对象设计的六大原则:单一职责原则(Single Responsibility Principle, ...

    面向对象设计原则

    面向对象设计原则是编程实践中的一种核心思想,尤其在OOPS(面向对象的程序设计系统)中,它们指导我们编写可维护、可扩展和高效的代码。本文将深入探讨这些原则,帮助程序员理解并应用它们。 首先,让我们从第一条...

    面向对象分析设计原则

    面向对象分析设计原则是软件开发中的核心指导思想,旨在提升代码的可维护性、可扩展性和可重用性。以下是这些原则的详细解释: 1. **单一职责原则(SRP)**:一个类或模块应只有一个明确的责任。这意味着类的设计应...

    Java设计模式02面向对象设计原则

    面向对象设计原则是指导软件工程师在设计阶段遵循的一系列准则,旨在提高软件的可维护性、可复用性和可扩展性。这些原则由多位软件设计大师总结提炼而成,如Robert C. Martin和Peter Coad等,他们认为良好的软件设计...

    面向对象设计原则.doc

    总之,面向对象设计原则中的“优先使用组合而非继承”原则,强调了通过组合来保持封装性、提高代码的灵活性和可维护性。在选择继承时应谨慎,确保它符合面向对象设计的最佳实践,避免不必要的耦合和脆弱的继承结构。...

    也有面向对象设计原则.

    此外,文中还提到了61条面向对象设计的经验原则,这些都是在实践中总结出来的宝贵经验,有助于开发者更好地应用面向对象设计理念。 ### 设计模式 设计模式是一系列已被验证的解决方案,用于解决软件设计中常见的...

    Java面向对象设计原则.docx

    "Java面向对象设计原则" Java面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心。下面我们将详细介绍七大设计原则。 原则1: DRY(Don't repeat yourself) DRY...

    java面向对象设计原则(带书签高清晰pdf)

    ### Java面向对象设计原则 #### 一、面向对象设计原则概览 面向对象设计原则是在软件开发过程中确保代码质量、可维护性和可扩展性的指导方针。遵循这些原则可以帮助开发者写出更加健壮、灵活且易于理解的代码。...

    Java程序员应该了解的10个面向对象设计原则

    ### Java程序员应掌握的10个面向对象设计原则详解 #### 原则1:DRY(Don't Repeat Yourself) **定义与理解:** DRY原则的核心思想是避免重复代码,提高代码复用性。这一原则鼓励开发者通过抽象化公共功能来减少...

    面向对象基本原则 面向对象基本原则

    以上原则为面向对象设计提供了坚实的理论基础,它们共同构成了面向对象编程语言中最重要的设计理念之一。遵循这些原则不仅可以帮助开发者构建出更为稳定、易于维护和扩展的系统,还能促进更好的团队协作和代码复用。

    面向对象设计原则Java.ppt

    面向对象设计原则是Java开发中不可或缺的指导方针,旨在提高软件的可维护性和可复用性。这些原则有助于创建更加灵活、稳定且易于扩展的系统。以下是对几个关键设计原则的详细阐述: 1. **单一职责原则 (Single ...

    面向对象设计原则Java概要.ppt

    原则  开闭原则的重要性 开闭原则是面向对象设计的核心原则之一,它指导我们如何设计出灵活、可扩展的系统。遵循开闭原则可以确保软件系统的可维护性和可扩展性,使得系统在需求变更时,可以通过增加新模块来...

Global site tag (gtag.js) - Google Analytics