java 工廠方法模式簡單實例


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

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

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

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

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

3.抽象工廠:所有的子類工廠類的基類,或是同一的接口

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

 

具體的實例代碼:

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

package factory.simple;

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

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

}

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

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();
    }

}

打印結果如下:

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

 

工廠模式,可以理解為:有了很多個工廠方法,自己需要哪一個產品,就調用當前產品的工廠方法,獲取相應的具體實例。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM