标签:c style class blog code java
简单工厂模式
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色:
工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对 象都是这个角色的实例,由具体类实现。
简单工厂模式优缺点:
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。
1 #define win 0 2 #define mac 1 3 #include <iostream> 4 using namespace std; 5 6 class button //抽象基类 类似于接口 7 { 8 public: 9 button(){} 10 virtual void createbutton()=0; 11 }; 12 13 class macbutton : public button 14 { 15 public: 16 macbutton(){} 17 virtual void createbutton(){cout<<"macbutton"<<endl;} 18 }; 19 class winbutton : public button 20 { 21 public: 22 winbutton(){} 23 virtual void createbutton(){cout<<"winbutton"<<endl;} 24 }; 25 26 class simplefactory 27 { 28 public: 29 simplefactory(){} 30 button *createproduct(int ID); //返回值是抽象基类的指针 31 button *createmacproduct(); 32 button *createwinproduct(); 33 }; 34 35 button *simplefactory::createproduct(int ID) 36 { 37 if (ID==win) 38 return new winbutton; //直接返回new<T> 39 if (ID==mac) 40 return new macbutton; 41 } 42 43 button *simplefactory::createwinproduct() 44 { 45 return new winbutton; 46 } 47 48 button *simplefactory::createmacproduct() 49 { 50 return new macbutton; 51 } 52 53 int main() 54 { 55 simplefactory fc; //声明或创建一个工厂 56 button *bt=fc.createproduct(win); //用工厂生产 生产是个指针 57 bt->createbutton(); 58 delete bt; 59 return 0; 60 }
代码改自http://www.cnblogs.com/tiandsp/archive/2012/06/24/2560106.html
要点 http://www.cnblogs.com/sadys/archive/2006/05/10/395869.html
标签:c style class blog code java
原文地址:http://www.cnblogs.com/whzlw/p/3778625.html