摘要: 想一下,如果pizza的加盟店用一些低廉的原料,这显然要砸了店里的招牌,所以要想办法让加盟店没办法改变原料。public class NYPizzaStore extends PizzaStore{ @Override protected Pizza createPizza(String type) { // TODO Auto-generated method stub Pizza pizza = null; PizzaIngredientFactory factory = new NYPizzaIngredientFactory... 阅读全文
posted @ 2013-09-26 18:07 wmm3416 阅读(227) 评论(0) 推荐(0) 编辑
摘要: DIP的设计原则为:依赖抽象类,不要依赖具体类。3个指导方针能帮我们避免在OO设计中违反DIP(1)变量不可以持有具体类的引用——如果new就会持有具体类的引用,可以使用工厂方法来避免这样的做法。(2)不要让类派生自具体类(3)不要覆盖基类中已实现的方法 阅读全文
posted @ 2013-09-26 17:13 wmm3416 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 书上举的例子是关于pizza的,例子很形象。工厂模型的目的就是要“对扩展开放,对修改封闭”。首先,我们想一个问题,new有什么不对?针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。如果针对接口编程,那么可以通过多态,它可以与任何新类实现该接口。但,当代码使用大量的具体时,就麻烦了,你要不断地修改代码。比如说Pizza店类的点餐orderPizza()方法,首先,当然要确定是点哪种pizzapublic class PizzaStore { Pizza orderPizza(String type){ Pizza pizza = null; if(type.equals("Che 阅读全文
posted @ 2013-09-26 16:25 wmm3416 阅读(1400) 评论(0) 推荐(0) 编辑