桥接模式
2020 年 09 月 02 日 215 252 字 暂无评论

01.概念

  • Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

02.角色和职责

  • Client:

    • Bridge模式的使用者
  • Abstraction:

    • 抽象类接口(接口或抽象类)维护对行为实现(Implementor)的引用
  • Refined Abstraction:

    • Abstraction子类
  • Implementor:

    • 行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
  • Concrete Implementor A & Concrete Implementor B:

    • Implementor子类

适用于:

  • 桥接模式Bridge Pattern)是将抽象部分与实现部分分离(解耦合),使它们都可以独立的变化。

03.代码案例

#include <iostream>

using namespace std;

class Engine
{
public:
        virtual void InstallEngine() = 0;
};

class Engine_4400cc : public Engine
{
public:
        virtual void InstallEngine()
        {
                cout << "我是 4400cc 发动机 安装完毕" << endl;
        }
};

class Engine_4500cc : public Engine
{
public:
        virtual void InstallEngine()
        {
                cout << "我是 4500cc 发动机 安装完毕" << endl;
        }
};

class  Car
{
public:
        Car(Engine* engine)
        {
                this->m_engine = engine;
        }
        virtual void InstallEngine() = 0;
protected:
        Engine* m_engine;
};

class BWM5 : public Car
{
public:
        BWM5(Engine* engine) : Car(engine)
        {
                
        }
        virtual void InstallEngine()
        { 
                cout << "我是 BMW5" << endl;
                m_engine->InstallEngine();
        }
};

class BWM6 : public Car
{
public:
        BWM6(Engine* engine) : Car(engine)
        {

        }
        virtual void InstallEngine()
        {
                cout << "我是 BMW6 准备安装发动机" << endl;
                m_engine->InstallEngine();
        }
};


void main()
{
        Engine* engine = new Engine_4400cc;
        BWM6* bmw6 = new BWM6(engine);
        bmw6->InstallEngine();

        delete engine;
        delete bmw6;
}
  • 输出
我是 BMW6 准备安装发动机
我是 4400cc 发动机 安装完毕

版权属于:zfh

本文链接:http://zfhblog.com/index.php/archives/130/



评论已关闭