1. 程式人生 > >Java工廠模式的簡單樣例

Java工廠模式的簡單樣例

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

}

列印結果如下:

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

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