程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 用代碼和UML圖化解設計模式之《橋接模式》

用代碼和UML圖化解設計模式之《橋接模式》

編輯:C++入門知識

橋接模式就是 獨立和實現相分離。

不同的廠家生產不同的產品。。。。產品和廠家有這組合的關系。

 

 

上代碼

[cpp]
// Bridge.cpp : 定義控制台應用程序的入口點。 
// 

//************************************************************************/     
/* @filename    Bridge.cpp
@author       wallwind  
@createtime    2012/10/24 00:00
@function     橋接模式
@email       [email protected]  
*/     
/************************************************************************/    
 
 
#include "stdafx.h" 
 
#include <iostream> 
 
using namespace std; 
 
class Product 

public: 
    Product(){} 
    virtual ~Product(){} 
     
    virtual void make()=0; 
    virtual void sell()=0; 
}; 
 
class ProductA:public Product 

public: 
    ProductA(){} 
    virtual ~ProductA(){} 
 
    virtual void make() 
    { 
        cout<<"ProductA:make()"<<endl; 
    } 
    virtual void sell() 
    { 
        cout<<"ProductA:sell()"<<endl; 
    } 
}; 
 
class ProductB:public Product 

public: 
    ProductB(){} 
    virtual ~ProductB(){} 
 
    virtual void make() 
    { 
        cout<<"ProductB:make()"<<endl; 
    } 
    virtual void sell() 
    { 
        cout<<"ProductB:sell()"<<endl; 
    } 
}; 
 
 
class Corp 

public: 
    Corp(Product* pro) 
        :m_product(pro) 
    {} 
    virtual ~Corp() 
    { 
        delete m_product; 
    } 
     
    virtual void process() 
    { 
        m_product->make(); 
        m_product->sell(); 
    } 
 
private: 
    Product *m_product; 
}; 
 
 
class CorpA:public Corp 

public: 
    CorpA(Product * pro) :Corp(pro){} 
    virtual ~CorpA(){} 
 
    virtual void process() 
    { 
        cout<<"CorpA():process()"<<endl; 
        Corp::process(); 
    } 
}; 
 
class CorpB:public Corp 

public: 
    CorpB(Product * pro) :Corp(pro){} 
    virtual ~CorpB(){} 
 
    virtual void process() 
    { 
        cout<<"CorpB:process()"<<endl; 
        Corp::process(); 
    } 
}; 
 
int _tmain(int argc, _TCHAR* argv[]) 

 
    Product* product; 
    product = new ProductA; 
 
    Corp * corp ; 
 
    corp = new CorpA(product); 
    corp ->process(); 
 
    cout<<"----------"<<endl; 
 
    product= new ProductB; 
    corp = new CorpB(product); 
 
    corp->process(); 
    return 0; 

生產和廠家都是獨立實現,充分給了自

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved