简单工厂模式

简单工厂模式又称静态工厂方法模式。这个模式很简单,它存在的目的也很简单:定义一个用于创建对象的接口。

组成 

工厂类角色:模式的核心,含有一定的商业逻辑和判断逻辑。

抽象产品角色:一般是具体产品集成的父类或者实现的接口

具体产品角色:工厂类所创建的对象就是此角色的实例。 

实例

某位暴发户买了两辆车--奔驰和宝马,还雇佣了司机为他开车。不过暴发户每次上宝马车就说:“开宝马车”,上奔驰车就说:“开奔驰车”。这样显得多此一举,现在我们把他改成直接说“开车”。

  /* 简单工厂模式 亚里士朱德 2010-9 */ #include <iostream> #include <cstring> using namespace std; //抽象产品角色:私家车 class Car { public: void drive() { cout<<"开车!"<<endl; } }; //具体工厂角色:宝马车,奔驰车 class BMW:public Car { public: BMW(void) { cout<<"去车库开宝马"<<endl; } }; class Benz:public Car { public: Benz() { cout<<"去车库开奔驰"<<endl; } }; //工厂类角色:司机 class Driver { public: Car* drivecar(char *str) { string car(str); if(car.compare("BMW")) { return new BMW(); } if(car.compare("Benz")) { return new Benz(); } return NULL; } }; void main() { //创建工厂:请司机 Driver driver; //创建具体产品:告诉司机开什么车 Car *mycar = driver.drivecar("BMW"); //开车 mycar->drive(); system("pause"); }

优点

客户端免除了直接创建产品对象的责任,仅仅需要消费产品

缺点 

添加产品时,工厂类需要改动,不符合开闭原则。当产品为多层次树形结构时简单工厂不方便处理

 

你可能感兴趣的:(String,null,System,Class,产品,2010)