zoukankan      html  css  js  c++  java
  • bridge模式

    看了好几天,一直没想明白bridge模式到底怎么用,知道今天把四人帮的书翻出来,看到这样一句话,才恍然大悟,敲出来记录一下。

    “一般来讲,Implementor接口仅提供基本操作,而Abstraction则定义了基于这些基本操作的较高层次的操作。”

     1 #include <iostream>
     2 using namespace std;
     3 
     4 
     5 // 为实现Abstraction定义的抽象基类,定义了实现的接口函数
     6 class Implementor
     7 {
     8 public:
     9     Implementor(){}
    10     virtual ~Implementor(){}
    11 
    12     virtual void OperationImpl() = 0;
    13 };
    14 
    15 // 继承自Implementor,是Implementor的不同实现之一
    16 class ConcreateImplementorA
    17     : public Implementor
    18 {
    19 public:
    20     ConcreateImplementorA(){}
    21     virtual ~ConcreateImplementorA(){}
    22 
    23     virtual void OperationImpl(){cout<<"I'm in AAAAAAAAAAAAAA!!!\n";}
    24 };
    25 
    26 // 继承自Implementor,是Implementor的不同实现之一
    27 class ConcreateImplementorB
    28     : public Implementor
    29 {
    30 public:
    31     ConcreateImplementorB(){}
    32     virtual ~ConcreateImplementorB(){}
    33 
    34     virtual void OperationImpl(){cout<<"I'm in BBBBBBBBBBBBBBB!!!\n";}
    35 };
    36 class Abstraction
    37 {
    38 public:
    39     Abstraction(Implementor* pImplementor){
    40         m_pImplementor=pImplementor;
    41     }
    42     virtual ~Abstraction(){delete m_pImplementor;};
    43 
    44     void Operation(){
    45         m_pImplementor->OperationImpl();
    46     }
    47 
    48 protected:
    49     Implementor* m_pImplementor;
    50 };
    51 
    52 
    53 int main()
    54 {
    55     Abstraction* tmp=new Abstraction(new ConcreateImplementorA());
    56     tmp->Operation();
    57     return 0;
    58 }
  • 相关阅读:
    [atARC100F]Colorful Sequences
    [atARC103D]Robot Arms
    [atARC107F]Sum of Abs
    [atAGC047F]Rooks
    [loj3278]收获
    [cf809E]Surprise me
    [cf997E]Good Subsegments
    [cf603E]Pastoral Oddities
    Codeforces Round #453
    Educational Codeforces Round 32
  • 原文地址:https://www.cnblogs.com/kakamilan/p/2598801.html
Copyright © 2011-2022 走看看