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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2个多月宝宝认人怎么办 婴儿认人一直哭怎么办 六个月宝宝认人怎么办 十一个月宝宝断奶后辅食怎么办 6个月宝宝不会坐怎么办 7个月宝宝坐不住怎么办 三个月宝宝白天闹觉怎么办 3个月宝宝不追声怎么办 一岁宝宝垃肚子怎么办 新生儿四天没大便怎么办老放屁 新生儿四五天不大便怎么办 新生儿五天没解大便怎么办 婴儿五天没拉大便怎么办 宝宝45天不拉屎怎么办 儿童4天不大便怎么办 4一5天不大便怎么办 俩月的宝宝便秘怎么办 宝宝6天没大便怎么办 新生儿3天不大便怎么办 50天宝宝几天没有大便怎么办 宝宝一吃奶就拉怎么办 2个月宝宝不拉屎怎么办 吃苹果呛到气管怎么办 三个月宝宝五天没拉大便了怎么办 三个月的宝宝五天不大便怎么办 十天婴儿不大便怎么办 宝宝断奶不喝牛奶怎么办 宝宝喝羊奶大便干燥怎么办 4个月宝宝睡眠少怎么办 8个月婴儿不吃奶粉怎么办 满月的宝宝黄疸高怎么办 刚满月的宝宝黄疸高怎么办 换奶粉孩子不喝怎么办 宝宝整夜哭闹不睡觉怎么办 满月宝宝整夜不睡觉怎么办 6个半月宝宝一喂粥就哭怎么办 宝宝敷鸡蛋白过敏怎么办 七个月宝宝不吃米糊怎么办 涨奶引起的发烧怎么办 8个月宝宝积食怎么办 宝宝吃奶一会就睡了怎么办