1. 程式人生 > >設計模式之工廠模式(三)

設計模式之工廠模式(三)

意圖:定義一個建立物件的介面,讓其子類自己決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。

主要解決:主要解決介面選擇的問題。

以下我們以一個汽車工廠為例子。

步驟 1

建立一個介面:汽車的介面

Car.java

public interface Car {
    //汽車可以奔跑
    void run();
}

步驟 2

建立實現介面的實體類,賓士車,寶馬車,現代車。

Benchi.java

public class Benchi implements Car {
    @Override
    public void run() {
        System.out.println("Benchi is runing!");
    }
}

Baoma.java

public class Baoma implements Car {
    @Override
    public void run() {
        System.out.println("Baoma is runing");
    }
}

XianDai.java

public class XiangDai implements Car {
    @Override
    public void run() {
        System.out.println("XiangDai is runing");
    }
}

步驟 3

建立一個汽車工廠,生成基於給定資訊的實體類的物件。

CarFactory.java

public class CarFactory {
    public  Car createCar(String carType){
        if(carType==null){
            return  null;
        }else if(carType.equals("Benchi")){
            return new Benchi();
        }else if(carType.equals("Baoma")){
            return  new Baoma();
        }else  if(carType.equals("XiangDai")){
            return new XiangDai();
        }
        return null;
    }
}

步驟 4

去買車。

BuyCar.java

public class BuyCar {
    //去汽車廠購買汽車
    public static void main(String[] args) {
        CarFactory carFactory = new CarFactory();
        //購買寶馬
        Car car1 = carFactory.createCar("Baoma");
        //寶馬的run方法
        car1.run();
        //購買現代
        Car car2 = carFactory.createCar("XiangDai");
        //現代的方法
        car2.run();
        //購買賓士
        Car car3 = carFactory.createCar("Benchi");
        //賓士的方法
        car3.run();
    }
}

步驟 5

執行程式,輸出結果:Baoma is runing
XiangDai is runing
Benchi is runing!