Factory Method属于创建型模式,要灵活运用它,首先要理解其各部分的概念:
- Product 定义了由factory method所创建对象的统一接口。
- ConcreteProduct 具体的类,实现Product接口。
- Creator 一般为抽象类,声明若干factory method(方法),由它创建类型为Product的对象。正因为它能"生产"对象,所以称为factory method。Creator也可能拥有一个方法创建某个缺省的具体对象。
- ConcreteCreator 重载factory method以创建某个 ConcreteProduct 的具体实例。
也就是说Creator依赖于ConcreteCreator创建Product型的ConcreteProduct对象。 Factory method使应用程序代码只需处理Product接口,而与具体的类(ConcreteProduct)无关,增强了代码可重用性,因为它独立于用户定义的具体的类。
Pattern 要点:
- Factory Method一个很大的特点是将将实例的创建与适用分开来操作, 好比制造汽车, 将制造过程留在工厂里,最后出来的只是一辆成型的汽车。 2009-12-04
- 这里很多地方用到了面向接口编程的思想,Sample mysample=new MySample();想这种就是将Sample定义成一个abstract类或接口,具体实现有MySample来实现,值得注意的是,这里MySample只是实现了Sample中定义的方法,并没有添加新的内容。2009-12-04
Factory Method适用的情况:
- 对象构造函数比较多,比较复杂的时候。比如Sample a = new Sample(xxxxx),如果这里面的参数比较复杂,说明这个类设计的也比较复杂,相当于把饺子都放在一个锅里了,这个时候如果考虑用factory method可以降低复杂度,后期如果需要alter或update就会比较容易。2009-12-04