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


    Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。

       它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

     适用于:

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

             车 安装 发动机 ;不同型号的车,安装不同型号的发动机        将“车 安装 发动机”这个抽象 和 实现进行分离;两个名字 就设计两个类;

             图形 填 颜色        不同形状的图形,填充上 不同的颜色           将“图形 填 颜色”这个抽象 和 实现 进行分离,两个名字,就设计两个类

     

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class Engine
     5 {
     6 public:
     7     virtual void InstallEngine() = 0;
     8 };
     9 
    10 class Engine4400cc : public Engine
    11 {
    12 public:
    13     virtual void InstallEngine()
    14     {
    15         cout << "我是 4400cc 发动机 安装完毕 " << endl;
    16     }
    17 };
    18 
    19 
    20 class Engine4500cc : public Engine
    21 {
    22 public:
    23     virtual void InstallEngine()
    24     {
    25         cout << "我是 4500cc 发动机 安装完毕 " << endl;
    26     }
    27 };
    28 
    29 
    30 class Car
    31 {
    32 public:
    33     Car(Engine *engine)
    34     {
    35         this->m_engine = engine;
    36     }
    37     virtual void installEngine() = 0;
    38 
    39 protected:
    40     Engine *m_engine;
    41 };
    42 
    43 class WBM5 : public Car
    44 {
    45 public:
    46     WBM5(Engine *engine) : Car(engine)
    47     {
    48         ;
    49     }
    50 
    51     virtual void installEngine()
    52     {
    53         m_engine->InstallEngine();
    54     }
    55 };
    56 
    57 class WBM6 : public Car
    58 {
    59 public:
    60     WBM6(Engine *engine) : Car(engine)
    61     {
    62         ;
    63     }
    64 
    65     virtual void installEngine()
    66     {
    67         cout << "我是 王保明 WBM6 " << endl;
    68         m_engine->InstallEngine();
    69     }
    70 };
    71 
    72 void main()
    73 {
    74     //
    75     Engine    *engine = NULL;
    76     WBM6    *wbm6 = NULL;
    77 
    78     engine = new Engine4400cc;
    79     wbm6 = new WBM6(engine);
    80     wbm6->installEngine();
    81 
    82     delete wbm6;
    83     delete engine;
    84     cout<<"hello..."<<endl;
    85     system("pause");
    86     return ;
    87 }

    分析

            

  • 相关阅读:
    Atitit 图像金字塔原理与概率 attilax的理解总结qb23
    Atiti  attilax主要成果与解决方案与案例rsm版 v4
    Atitit 常用比较复杂的图像滤镜 attilax大总结
    Atitit. Api 设计 原则 ---归一化
    Atitit 面向对象弊端与问题 坏处 缺点
    Atitit  记录方法调用参数上下文arguments
    Atitit 作用域的理解attilax总结
    Atitit usrQBM1603短信验证码规范
    atitit 短信验证码的源码实现  .docx
    Atitit 图片 验证码生成attilax总结
  • 原文地址:https://www.cnblogs.com/D-DZDD/p/7341810.html
Copyright © 2020-2023  润新知