簡單工廠-SinpleFactory

 

簡單工廠:

一個具體工廠通過條件語句創建多個產品,產品的創建邏輯集中在一個工廠類上。

客戶端通過傳遞不同的參數給工廠,實現創建不同產品的目的。

增加新產品時,需要修改工廠類,這不符合OCP原則。

 

code:
抽象類(或接口):
public abrtract class Auto{
abstract public void run();
}

 

實現類Car:
public class Car extends Auto{
public Car(){}
public void run(){
System.out.println("啓動car");
}
}

 

實現類Truck:
public class Truck extends Auto{
public Truck(){}
public void run(){
System.out.println("啓動truck");
}
}


工廠類:
public class AutoFactory{
public static Auto createAuto(int autoId){
switch(autoId){
case1: return new Car();
case2: return new Truck();
}
}
}

 

客戶端:
pubic class Client{
public static void main(){
Auto car = AutoFactory.createAuto(1);
car.run();
Auto truck = AutoFactory.createAuto(1);
truck.run();
}
}

 


優點:
客戶端調用創建產品時與產品的具體類的耦合度降低;
令創建與使用的代碼相分離,可以獨立的變化,易維護和擴展;

 


缺點:
當產品有複雜的多層次等級結構時,工廠類只有一個,只能以不變應萬變。
所有產品的創建都集中到工廠類中,系統在進行功能擴展時較爲困難。
簡單工廠使用靜態方法作爲工廠方法,無法形成繼承,使用工廠的可擴展性受到限制。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章