設計模式之工廠模式(三)
阿新 • • 發佈:2018-12-16
意圖:定義一個建立物件的介面,讓其子類自己決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。
主要解決:主要解決介面選擇的問題。
以下我們以一個汽車工廠為例子。
步驟 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!