您的位置:首页 > 其它

23种设计模式(1)-factory 模式

2016-05-17 10:41 141 查看
面向对象的设计原则:高内聚、低耦合

软件重构:小步快跑------抽取的思想(抽取函数、抽取类、抽取接口);对扩展开放、对修改封闭

设计模式分类如下:



1、创建型模式--Factory模式

class Product
{
public:
virtual ~Product() = 0;
protected:
Product();
};

Product::Product(){}
Product::~Product(){}

class ConcreteProduct :public Product
{
public:
~ConcreteProduct();
ConcreteProduct();
};

ConcreteProduct::ConcreteProduct()
{
cout << "ConcreteProduct.." << endl;
}

ConcreteProduct::~ConcreteProduct(){}

class Factory
{
public:
virtual ~Factory() = 0;
virtual Product* CreateProduct(int n) = 0;
protected:
Factory();
};

Factory::Factory(){}
Factory::~Factory(){}

class ConcreteFactory :public Factory
{
public:
~ConcreteFactory();
ConcreteFactory();
Product* CreateProduct(int n = 0);
};

ConcreteFactory::ConcreteFactory()
{
cout << "concrete factory" << endl;
}

Product* ConcreteFactory::CreateProduct(int n)
{//n 可以用宏定义来实现
switch (n)
{
case 0:
return new ConcreteProduct();

/*default:
return new ConcreteProduct1();
................多个product
*/
}

}

ConcreteFactory::~ConcreteFactory(){}

int main()
{
Factory *fac = new ConcreteFactory();
Product* p = fac->CreateProduct(0);
return 0;
}


这样的好处:

1、抽象了product和factory,将类的实现放到了子类中

2、大大方便了代码的扩展和重构,当有新的product要添加进来时,只需要实现新的newProduct类,新的NewFactory类,不需要改变某些类中的代码,只需要在main函数中调用相应的接口即可。满足对扩展开放、对修改封闭的原则。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: