用代码跟UML图化解设计模式之《桥接模式》
用代码和UML图化解设计模式之《桥接模式》
桥接模式就是 独立和实现相分离。
不同的厂家生产不同的产品。。。。产品和厂家有这组合的关系。
上代码
// Bridge.cpp : 定义控制台应用程序的入口点。 // / //************************************************************************/ /* @filename Bridge.cpp @author wallwind @createtime 2012/10/24 00:00 @function 桥接模式 @email wochenglin@qq.com */ /************************************************************************/ #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; }
生产和厂家都是独立实现,充分给了自由。。。。
ok 今天就到这里。。。。继续学习
更多文章,欢迎访问: