23种设计模式(1)-factory 模式
来源:互联网 发布:超牛数据恢复注册码 编辑:程序博客网 时间:2024/05/16 18:44
面向对象的设计原则:高内聚、低耦合
软件重构:小步快跑------抽取的思想(抽取函数、抽取类、抽取接口);对扩展开放、对修改封闭
设计模式分类如下:
1、创建型模式--Factory模式
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函数中调用相应的接口即可。满足对扩展开放、对修改封闭的原则。
0 0
- 23种设计模式(1)-factory 模式
- 23种设计模式(Factory模式)
- 23种设计模式-Abstract Factory(抽象工厂)设计模式
- [设计模式]Factory模式
- 设计模式------Factory 模式
- 设计模式:Factory模式
- 设计模式--Factory模式
- 23种设计模式——Factory模式
- 23种设计模式学习—abstract factory模式
- 23种设计模式-4.工厂方法模式(Factory Method)
- java 23种设计模式--工厂模式(factory)
- 23种设计模式之工厂模式(Factory)
- 设计模式(1)-工厂模式(Factory)
- 设计模式(1)-工厂模式(Factory)
- 设计模式之美(1):Factory模式
- 设计模式(1) - Factory工厂模式
- 设计模式之Factory
- 设计模式之Factory
- AddressBookUI获取通讯录
- wxWidgets编译运行 helloworld
- 国家授时中心NTP服务器IP地址
- 微软.NET 正式劈腿成功,横跨所有平台
- [疯狂Java]NIO多路复用网络通信:Selector、SelectionKey、SelectableChannel(SocketChannel、ServerSocketChannel)
- 23种设计模式(1)-factory 模式
- AddressBook获取通讯录
- [疯狂Java]AIO:
- 【计算几何】点在多边形内部
- 数组,对象,字典
- 解决linux下javac -version和java -version版本显示不一致
- 《Redis设计与实现》阅读:Redis底层研究之哈希表hashtable
- 获取音乐当前播放时间和总时长
- Python注释及中文注释