23种设计模式(1)-factory 模式
2016-05-17 10:41
141 查看
面向对象的设计原则:高内聚、低耦合
软件重构:小步快跑------抽取的思想(抽取函数、抽取类、抽取接口);对扩展开放、对修改封闭
设计模式分类如下:
1、创建型模式--Factory模式
这样的好处:
1、抽象了product和factory,将类的实现放到了子类中
2、大大方便了代码的扩展和重构,当有新的product要添加进来时,只需要实现新的newProduct类,新的NewFactory类,不需要改变某些类中的代码,只需要在main函数中调用相应的接口即可。满足对扩展开放、对修改封闭的原则。
软件重构:小步快跑------抽取的思想(抽取函数、抽取类、抽取接口);对扩展开放、对修改封闭
设计模式分类如下:
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函数中调用相应的接口即可。满足对扩展开放、对修改封闭的原则。
相关文章推荐
- SSH连接总是定期断掉的解决办法
- 冒泡排序(网上找的,备着)
- ViewFilpper实现文字LED显示效果
- 《Windows API》遍历卷
- 欢迎使用CSDN-markdown编辑器
- 关于onload事件
- 点击事件处理
- uva 11292
- Python学习笔记2
- 近期工作中使用到的插件总结
- servlet在spring中加载的顺序
- sass中中文注释报错
- ubuntu 搜狗输入法配置
- bzoj 3569: DZY Loves Chinese II
- Android NDK 版本说明
- 直方图均衡化
- QuartusII 13.0 Licese not found xxxxx device
- 获取手机信息
- java解析xml的4种方式:1、Dom,2、SAX,3、Jdom,4、dom4j
- [转]HTML解析原理