4. 工厂模式
来源:互联网 发布:windows mobile 编辑:程序博客网 时间:2024/06/03 19:56
工厂模式主要是用来创建对象。文中的例子,不同的pizza store制作不同种类的pizza。对于不同的pizza store可以抽象出来一个抽象的pizza store类,对于不同种类的pizza也可以抽象出来一个抽象的pizza类。pizza store需要实现制作pizza的方法,所以在实例化具体pizza store对象后,调用orderPizza根据传入的不同pizza类型,创建具体的pizza,之后委托这个具体的pizza对象进行准备原料、烤焙、切块、和装箱,这一系列操作。这样做的优点在于将创建具体对象(具体的pizza)的工作延迟到子类(具体的pizza store)进行,达到对象创建的过程封装的目的,产品的“实现“从”使用“中解耦。
orderPizza在pizzaStore的基类中定义,不需要知道哪个具体的pizza参与操作,这就是解耦。工厂模式将创建对象的工作集中在一个对象或一个方法中,避免代码重复,方便维护。并且遵循依赖倒置原则,无论是高层组件pizza store,还是底层组件具体的pizza,都依赖于抽象。缺点是pizza store依赖于具体pizza的实现,当pizza的种类增加时,createPizza方法也要做修改。
Pizza *pizzaStore::orderPizza(int type){ Pizza *pizza; pizza = createPizza(type); pizza->prepare(); pizza->bake(); pizza->cut(); pizza->box(); return pizza;}Pizza *concretePizzaStoreA::createPizza(int type){ if(type == PIZZA_A) return new concretePizzaA(); else(type == PIZZA_B) return new concretePizzaB();}
client:// 1.创建一个pizza店PizzaStore *pizzaStore = new concretePizzaStoreA();// 2.下单pizzaStore->orderPizza(type);// 3. orderPizza中调用createpizza创建具体pizza对象// 4. 对pizza准备原料-->烤焙-->切块-->装箱。
阅读全文
0 0
- 4.抽象工厂模式
- 4.工厂方法模式
- 4.抽象工厂模式
- 4. 工厂模式
- 【设计模式】4. 工厂方法模式、抽象工厂模式
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 四. 正则表达式的使用
- GIT本地删除除master以外所有分支
- Leetcode Swap Nodes in Pairs
- linux 下 *.so动态库引入
- Linux并发服务器编程之多线程并发服务器
- 4. 工厂模式
- 关于QT的 常量中有换行符 的问题
- java面试题及答案
- 【Leetcode】252,253 meeting room系列 区间问题
- UVA
- Python之——Eclipse +PyDev开发python,import其他模块时eclipse会报错,运行却没有问题
- Lua泛型for
- Codeforces 869C ( Codeforces Round #439 (Div. 2) ) The Intriguing Obsession 组合数学
- hdu 5646 拆数积最大 数学