Head First -- 工厂方法
2013-01-04 00:00
477 查看
定义:
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
主要示例代码:
优点:
它能够帮助我们将产品的"实现"从"使用"中解耦。如果增加产品或者改变产品的实现,Creator并不会受到影响(因为Creator与任何具体产品之间都不是紧耦合)。
将创建对象的代码集中在一个对象或者方法中,可以避免代码中的重复,并且方便日后的维护。这也意味着客户在实例化对象时,只会依赖于接口,而不是具体的实现类。这可以帮助我们针对接口编程,而不是针对实现。这让代码更具有弹性,更好的应对未来的扩展。
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
主要示例代码:
public abstract class PizzaStore { public Pizza orderPizza(String type){ Pizza pizza = createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } abstract Pizza createPizza(String type); } public abstract class Pizza { String name; String dough; String sauce; void prepare(){ System.out.println("prepare pizza"); } void bake(){ System.out.println("bake pizza"); } void cut(){ System.out.println("cut pizza"); } void box(){ System.out.println("box pizza"); } } public class NYStylePizzaStore extends PizzaStore{ public Pizza createPizza(String type) { Pizza pizza = null; if(type.equals("cheese")){ pizza = new NYStyleCheesePizza(); }else if(type.equals("veggie")){ pizza = new NYStyleVeggiePizza(); } else if(type.equals("clam")){ pizza = new NYStyleClamPizza(); } return pizza; }
优点:
它能够帮助我们将产品的"实现"从"使用"中解耦。如果增加产品或者改变产品的实现,Creator并不会受到影响(因为Creator与任何具体产品之间都不是紧耦合)。
将创建对象的代码集中在一个对象或者方法中,可以避免代码中的重复,并且方便日后的维护。这也意味着客户在实例化对象时,只会依赖于接口,而不是具体的实现类。这可以帮助我们针对接口编程,而不是针对实现。这让代码更具有弹性,更好的应对未来的扩展。
相关文章推荐
- Head First 设计模式 —— 工厂模式与工厂方法
- <Head First 设计模式>:工厂模式1:方法模式--Pizza
- 《Head First 设计模式》之工厂方法模式
- Head First -- 工厂方法
- head first 设计模式学习之 简单工厂,工厂方法和抽象工厂
- Head First 设计模式学习——简单工厂方法-工厂方法模式-抽象工厂模式
- JAVA 8 TemporalAdjusters 类的工厂方法
- 工厂方法
- 在工厂模式里面利用反射机制动态调用对象方法
- 追MM与设计模式的JAVA实现-简单工厂方法
- 利用反射实现工厂方法
- 设计模式学习(二)工厂方法
- 设计模式 - 工厂方法
- 构造器与工厂方法的区别
- 工厂方法 (Factory Method) 创建型模式
- Spring-配置bean的方法(工厂方法和Factorybean)【转】
- Effective Java 3rd 条目1 考虑用静态工厂方法代替构造子
- Effective Jave——第1条: 考虑用静态工厂方法代替构造函数
- Java语言 封装创建 简单工厂方法(Simple Factory method)
- 2.3 Factory Method(工厂方法)