java 工廠方法模式簡單實例

工廠方法模式:也叫工廠模式,屬於類建立型模式,工廠父類(接口)負責定義產品對象的公共接口,而子類工廠則負責建立具體的產品對象。ide

目的:是爲了把產品的實例化操做延遲到子類工廠中完成,經過工廠子類來決定究竟應該實例化哪個產品具體對象。函數

工廠方法模式包含四個部分:工具

1.抽象產品:產品對象同一的基類,或者是同一的接口。測試

2.具體的產品:各個不一樣的實例對象類spa

3.抽象工廠:全部的子類工廠類的基類,或是同一的接口code

4.具體的工廠子類:負責每一個不一樣的產品對象的實際建立對象

 

具體的實例代碼:blog

1.抽象的產品類:定義car  交通工具類下:接口

package factory.simple;

/**
 * 抽象產品角色 交通工具接口
 * 
 * @author lilin
 * 
 */
public interface Car {

    /**
     * 上班函數
     */
    void gotowork();

}

2.定義實際的產品類,總共定義兩個,bike 和bus 分別表示不一樣的交通工具類get

package factory.simple;

/**
 * 具體產品角色,自行車
 * 
 * @author lilin
 * 
 */
public class Bike implements Car {
    @Override
    public void gotowork() {
        System.out.println("騎自行車去上班!");
    }

}

 

package factory.simple;

/**
 * @author lilin
 * 
 */
public class Bus implements Car {

    @Override
    public void gotowork() {
        System.out.println("坐公交車去上班!");
    }

}

 

3.抽象的工廠接口定義以下:、

/**
 * 
 */
package factory.factory;

import factory.simple.Car;

/**
 * @author lilin
 * 
 */
public interface ICarFactory {

    /**
     * 獲取交通工具
     * 
     * @return
     */
    Car getCar();

}

 

4.具體的工廠子類,分別爲每一個具體的產品類建立不一樣的工廠子類:

/**
 * 
 */
package factory.factory;

import factory.simple.Bike;
import factory.simple.Car;

/**
 * @author lilin
 * 
 */
public class BikeFactory implements ICarFactory {

    @Override
    public Car getCar() {
        return new Bike();
    }

}

 

/**
 * 
 */
package factory.factory;

import factory.simple.Bus;
import factory.simple.Car;

/**
 * @author lilin
 * 
 */
public class BusFactory implements ICarFactory {

    @Override
    public Car getCar() {
        return new Bus();
    }

}

最後,使用簡單的測試類,來驗證下 不一樣的工廠可以產生不一樣的產品對象:測試類以下:

/**
 * 
 */
package factory.factory;

import org.testng.annotations.Test;

import factory.simple.Car;

/**
 * @author lilin
 * 
 */
public class TestFactory {

    @Test
    public void test() {
        ICarFactory factory = null;
        // bike
        factory = new BikeFactory();
        Car bike = factory.getCar();
        bike.gotowork();

        // bus
        factory = new BusFactory();
        Car bus = factory.getCar();
        bus.gotowork();
    }

}

打印結果以下:

騎自行車去上班!
坐公交車去上班!

 

工廠模式,能夠理解爲:有了不少個工廠方法,本身須要哪個產品,就調用當前產品的工廠方法,獲取相應的具體實例。

相關文章
相關標籤/搜索