工厂方法模式:为工厂类定义了接口,使用多态来削弱工厂类的职责。
*          将简单工厂创建对象的职责分担到子工厂类中,子工厂相互独立,互相不受影响。
*          工厂方法模式也有他的局限性,当面对有复杂的树形结构的产品时,就必须为
*          每个产品创建一个对应的工厂类,当达到一定数量级就会出现类爆炸。
*          整体结构:   1.创建产品接口
*                      2. 定义产品类去实现产品接口
*                      3.定义(总)工厂接口,并在接口中定义创建产品工厂的方法(eg:create();)
*                      4.定义子(产品)工厂类,并在create方法中返回产品。(即return new xxxProduct();)
*                      5.在Main中根据工厂去创建不同的产品工厂。

实例:

package com.henu.factory;

/**
 * @author George
 * @description 工厂方法模式:为工厂类定义了接口,使用多态来削弱工厂类的职责。
 *          将简单工厂创建对象的职责分担到子工厂类中,子工厂相互独立,互相不受影响。
 *          工厂方法模式也有他的局限性,当面对有复杂的树形结构的产品时,就必须为
 *          每个产品创建一个对应的工厂类,当达到一定数量级就会出现类爆炸。
 *          整体结构:   1.创建产品接口
 *                      2. 定义产品类去实现产品接口
 *                      3.定义(总)工厂接口,并在接口中定义创建产品工厂的方法(eg:create();)
 *                      4.定义子(产品)工厂类,并在create方法中返回产品。(即return new xxxProduct();)
 *                      5.在Main中根据工厂去创建不同的产品工厂。
 **/
public class TestFactoryMethodPattern {

    public static void main(String[] args) {
        //根据工厂去创建产品(即实例化对象)
        Factory factory = null;
        factory = new PhoneFactory();
        //创建手机
        factory.create();
        //创建电脑
        new ComputerFactory().create();
    }

}

//定义产品接口
interface Product{}

//定义手机类
class Phone implements Product{
    //无参构造方法
    public Phone() {
        System.out.println("Phone被创建了!");
    }
}
//定义电脑类
class Computer implements Product{
    public Computer() {
        System.out.println("电脑被创建了!");
    }
}

//定义工厂接口
interface Factory{
    public Product create();
}

//定义手机工厂
class PhoneFactory implements Factory{
    @Override
    public Product create() {
        return new Phone();
    }
}
//定义电脑工厂
class ComputerFactory implements Factory{
    @Override
    public Product create() {
        return new Computer();
    }
}

 

更多推荐