工厂方法模式
是什么?
怎么用?
适用哪些情况?
工厂方法模式:
在不指定对象具体类型的情况下创建对象。
主要目的是创建对象!!!
以下情况可用工厂方法模式:
1、创建对象需要大量重复的代码
2、创建对象时需要用到其他的信息,而这些信息不应该包含在这个类中
3、创建对象的生命周期需统一管理
原理:
Product 是个接口,所有产品都需要实现这个接口。
ConcreteProduct 是具体产品类,实现了Product接口。在这个类中,调用工厂方法创建对象。
Creator 是普通类,它实现了所有的方法,但不实现工厂方法。
ConcreteCreator 是继承了Creator类,它实现了具体的工厂方法,供ConcreteProduct具体产品类调用。
维基百科code例子:
比如:
有个Button表示按钮类,另外有两个它的子类WinButton和MacButton类,分别表示Windows下的按钮类和MacOS下的按钮类,则具体实现为:
interface ButtonFactory{ abstract Button createButton(); }
class WinButtonFactory implements ButtonFactory{ Button createButton(){ return new WinButton(); } }
class MacButtonFactory implements ButtonFactory{ Button createButton(){ return new MacButton(); } }
实际中的应用:
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.SAXParserFactory