橋接模式就是 獨立和實現相分離。
不同的廠家生產不同的產品。。。。產品和廠家有這組合的關系。
上代碼
[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;
}
生產和廠家都是獨立實現,充分給了自