工厂模式可以分为两种,一种是简单工厂,另外一种是抽象工厂。
简单工厂,用来集中生成对象示例的
例如,最常见的用法就是用来生成持久层对象;
public class SimpleFactory {
private static UserDao userDao = new UserDaoImpl();
public static UserDao getUserDao(){
returnuserDao;
}
}
抽象工厂:
- publicabstractclassAbstractDuckFactory{
- publicabstractQuackablecreateMallardDuck();
- publicabstractQuackablecreateRedheadDuck();
- publicabstractQuackablecreateDuckCall();
- publicabstractQuackablecreateRubberDuck();
- }
- publicclassCountingDuckFactoryextendsAbstractDuckFactory{
- publicQuackablecreateMallardDuck(){
- returnnewQuackCounter(newMallardDuck());
- }
- publicQuackablecreateRedheadDuck(){
- returnnewQuackCounter(newRedheadDuck());
- }
- publicQuackablecreateDuckCall(){
- returnnewQuackCounter(newDuckCall());
- }
- publicQuackablecreateRubberDuck(){
- returnnewQuackCounter(newRubberDuck());
- }
- }
抽象工厂,要想使用它,就必须首先实例化它,然后将它传入一些针对抽象类型所写的代码中。所以可以把客户从所使用的具体产品中解耦。