Headfirst-5 工厂方法模式

时间:2022-10-02 15:40:41

1          工厂方法模式

定义:工厂方法模式又称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或多态工厂(Polymorphic Factory)模式,属于类的创建模式。在工厂方法中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化那个类。

2.1 模式设计原则

依赖抽象,不要依赖具体类。类不知道自己要创建哪一个对象。类用他的子类来指定创建哪个对象。客户需要清楚创建了哪一个对象。

2.2 例子类图

Headfirst-5 工厂方法模式

2.3 例子代码

/*

 * Mobile.java

 * Create on 2009-8-3,10:00

 */

package factory.factorymethod;

 

/**

 * 手机接口

 */

public interface Mobile {

 

    void call();

}

 

 

/*

 * Nokia.java

 * Create on 2009-8-3,,10:02

 */

 

package factory.factorymethod;

 

/**

 * 具体手机产品,实现接口 <CODE>Mobile</CODE>

 */

public class Nokia implements Mobile{

 

    public void call() {

        System.out.println("nokia 手机");

    }

 

}

 

 

/*

 * Motorola.java

 * Create on 2009-8-3,10:01

 */

 

package factory.factorymethod;

 

/**

 * 具体手机产品,实现接口 <CODE>Mobile</CODE>

 */

public class Motorola implements Mobile{

 

    public void call() {

        System.out.println("Motorola 手机");

    }

 

}

 

/*

 * MobileFactory.java

 * Create on 2009-8-3,9:59

 */

 

package factory.factorymethod;

 

/**

 * 手机工厂接口

 */

public interface MobileFactory {

 

    public Mobile produceMobile();

}

 

/*

 * MotorolaFactory.java

 * Create on 2009-8-3,10:04

 */

package factory.factorymethod;

 

/**

 * motorola 工厂实现了生产手机的方法,返回motorola 手机。

 */

public class MotorolaFactory implements MobileFactory {

 

    public Mobile produceMobile() {

        System.out.print("motorola 工厂制造了");

        return new Motorola();

    }

}

 

/*

 * NokiaFactory.java

 * Create on 2009-8-3,10:04

 */

package factory.factorymethod;

 

/**

 * nokia 工厂实现了生产手机的方法,返回 nokia 手机。

 */

public class NokiaFactory implements MobileFactory {

 

    public Mobile produceMobile() {

        System.out.print("nokia 工厂制造了");

        return new Nokia();

    }

}

 

/*

 * Client.java

 * Create on 2009-8-3,19:31

 */

package factory.factorymethod;

 

/**

 * 工厂方法模式(Factory Method Pattern) <br>

 * 《深入浅出设计模式》<br>

 * <li>定义:<br>

 * 工厂方法模式又称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或多态工厂 <br>

 * (Polymorphic Factory)模式,属于类的创建模式。<br>

 * 在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,<br>

 * 这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化那个类。<br>

 *<li>应用:<br>

 * 1.类不知道自己要创建那一个对象。<br>

 * 2.类用它的子类来指定创哪个对象。<br>

 * 3.客户需要清楚创建了哪一个对象。<br>

 */

public class Client {

 

    public static void main(String[] args) {

        MobileFactory motorolaFactory = new MotorolaFactory();

        Mobile motorola = motorolaFactory.produceMobile();

        motorola.call();

        MobileFactory nokiaFactory = new NokiaFactory();

        Mobile nokia = nokiaFactory.produceMobile();

        nokia.call();

    }

}