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

桥接模式(Bridge)与合成/聚合复用原则(CARP)

UML 
阅读更多

重要概念

1.合成/聚合复用原则:优先使用对象合成/聚合(UML中的两个菱形关系),而不是类继承。尽量使用合成/聚合,不使用类继承,继承属于强耦合的结构。

image

2.合成/聚合复用好处:优先使用对象的合成/聚合将有助于你保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。

image

3. 将抽象部分与它的实现部分分离,使他们都可以独立地变化。

4. 由于实现方式有多种,桥接模式的核心意图就是把实现独立出来,让它们各自变化。这就使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。

下图演变

image

5. 实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。

image

 

 

实例代码

 

using System;
using System.Collections.Generic;
using System.Text;

namespace 桥接模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Abstraction ab = new RefinedAbstraction();
            //设置了桥接关联
            ab.SetImplementor(new ConcreteImplementorA());
            //调用操作
            ab.Operation();
            //设置又一个桥接关联
            ab.SetImplementor(new ConcreteImplementorB());
            //调用操作
            ab.Operation();

            Console.Read();
        }
    }

    /// <summary>
    /// 抽象分类一
    /// </summary>
    class Abstraction
    {
        //其中包含(聚合)有另一个抽象成员
        protected Implementor implementor;

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="implementor"></param>
        public void SetImplementor(Implementor implementor)
        {
            this.implementor = implementor;
        }

        /// <summary>
        /// 具体操作,使用了另一个抽象的方法,虚方法,子类可以重载其功能来实现内部功能。
        /// </summary>
        public virtual void Operation()
        {
            implementor.Operation();
        }

    }

    class RefinedAbstraction : Abstraction
    {
        public override void Operation()
        {
            implementor.Operation();
        }
    }


    /// <summary>
    /// 另一个以功能来分类的抽象
    /// </summary>
    abstract class Implementor
    {
        public abstract void Operation();
    }

    /// <summary>
    /// 下面是两个具体的功能实现
    /// </summary>
    class ConcreteImplementorA : Implementor
    {
        public override void Operation()
        {
            Console.WriteLine("具体实现A的方法执行");
        }
    }

    class ConcreteImplementorB : Implementor
    {
        public override void Operation()
        {
            Console.WriteLine("具体实现B的方法执行");
        }
    }

}
分享到:
评论

相关推荐

    合成聚合复用原则_刘邦VS韩信.pdf

    合成聚合复用原则,简称CARP或CRP,是面向对象设计中的一项重要原则,它强调在构建新对象时应优先考虑使用已有对象的合成和聚合,而不是通过继承来达到复用目的。这一原则旨在降低类之间的耦合度,提高系统的可维护...

    java 设计模式与Jar库

    java 设计模式与Jar库 里氏代换原则LSP 依赖倒转原则DIP 接口隔离原则ISP 合成/聚合复用原则CARP

    SQL语句优化2

    开-闭原则(OCP):一个软件实体应当对扩展开放,对修改关闭。 ...合成/聚合复用原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。 迪米特法则(LoD):一个对象应当对其他对象有尽可能少的了解

    设计模式六大原则 .docx

    例如,桥接模式利用了合成/聚合,将抽象部分和实现部分分开,使它们可以独立地变化。 这六大原则是面向对象设计的核心,遵循这些原则可以帮助开发者创建出更健壮、灵活且易于维护的软件系统。在实际编程中,要时刻...

    合成聚合复用原则_动力节点Java学院整理

    合成复用原则的定义是:在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用功能的目的。 合成复用原则的优点是: ...

    软件设计的七大原则.doc

    五、 合成/聚合复用原则(CARP) 合成/聚合复用原则是指在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量...

    软件设计的七大原则

    五、 合成/聚合复用原则(CARP) 合成/聚合复用原则是指在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量...

    韩顺平-设计模式1

    合成/聚合复用原则(CARP)推荐优先使用对象的组合/聚合,而不是继承,因为组合/聚合具有更高的灵活性和更低的耦合度。 通过深入学习和实践这些设计模式和原则,开发者可以提升自己的编程技能,编写出更高质量、更...

    合成复用原则.doc

    合成复用原则(Composite Reuse Principle,CRP),又称组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP),是在面向对象设计中的一项重要指导原则。该原则强调:在进行软件复用时,应优先考虑使用...

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

    DIP)、接口隔离原则(Interface Segregation Principle, ISP)以及合成/聚合复用原则(Composite/Aggregate Reuse Principle, CARP)。 #### 1. 单一职责原则(Single Responsibility Principle, SRP) - **定义...

    设计模式(16)-Bridge.pdf

    3. **组合/聚合复用原则(CARP)**:桥接模式使用组合而非继承,避免了由于继承导致的类层次过于复杂的问题。 4. **扩展性**:易于添加新的实现化类,因为实现化部分是独立的,不会影响到抽象化部分。 桥接模式适用...

    23种设计模式,及设计模式的七种设计原则的文档和Java代码实现

    7. 合成/聚合复用原则(Composition/Aggregation Reuse Principle, CARP):优先使用对象的组合/聚合,而不是继承,以降低类之间的耦合。 接下来,我们详细探讨一下23种设计模式: 1. 创建型模式(Creational ...

    面向对象的设计原则

    5. **合成/聚合复用原则 (CARP)** - **定义**:这一原则提倡使用合成/聚合而非继承来进行代码复用。这意味着,当你需要复用某些功能时,优先考虑通过组合的方式来实现,而不是通过继承。 - **优点**:提高了...

    灸哥讲设计么:为什么学?怎么学 &amp;amp;amp; 软件设计七原则解读

    - 组合/聚合复用原则(CARP):优先使用对象的组合/聚合,而不是继承来达到复用的目的,以减少类间的耦合。 - 迪米特法则(LoD):一个对象应该对其他对象有最少的了解,只和朋友交谈,不和陌生人说话,降低类之间的...

    面向对象六大设计原则

    1、“开-闭”原则(Open-Closed Principle,OCP) 2、里氏替换原则(Liskov Substitution Principle,LSP...5、合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP) 6、迪米特法则(Law of Demeter,LoD)

    面向对象设计原则和设计模式的概念

    #### 合成/聚合复用原则 (CARP) 合成/聚合复用原则提倡使用对象的组合或聚合而非继承来达到复用的目的。这种方法可以避免继承带来的问题,如紧耦合和多继承的复杂性。例如,如果需要设计一个“汽车”类,可以通过...

    2023年最新java面试题及答案

    6、合成/聚合复用原则(Composition/Aggregation Reuse Principle,CARP)优先使用对象的组合/聚合,而不是继承来达到复用的目的。组合/聚合允许在运行时动态地改变对象结构,而继承则在编译时就固定了类的结构。...

    面向对象设计原则与设计说明

    合成/聚合复用原则(CARP) 合成/聚合复用原则建议通过组合或聚合现有对象的方式来构建新的对象,而不是通过继承。这是因为合成/聚合提供了更高的灵活性和更低的耦合度,同时避免了继承的一些潜在问题,如层次结构...

    Java与模式

    ### 第10章:合成/聚合复用原则(CARP) 合成/聚合是一种重要的复用机制,本章对比了合成和聚合的差异,探讨了复用的基本类型,并从代码重构的角度阐述了如何有效应用合成/聚合原则,以增强代码的可维护性和可扩展...

    面向对象开发设计原则ppt

    ### 合成/聚合复用原则 (CARP) #### 定义 合成/聚合复用原则提倡使用对象组合或聚合的方式而不是继承来达到复用的目的。 #### 分析 - **原因**:与继承相比,使用对象组合或聚合的方式可以更好地控制耦合度,并且...

Global site tag (gtag.js) - Google Analytics