以交通工具舉例
給司機一輛車(也可以新增多型,讓司機選一輛車)
概念:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到了子類。
任意定製交通工具(多型)型別和生產過程
public inte***ce moveable
public class car implements moveable
}public class plane implements moveable
}
public abstract class vehiclefactory
public class ca***ctory extends vehiclefactory
}public class broomfactory extends vehiclefactory
}
public class test
}
概念:提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們的具體類。與工廠方法不同在於抽象工廠建立一系列的多個產品。
控制系列產品(車,**,食品補給)生產替換
新增產品型別,以及對應的產品
public abstract class vehicle
public class car extends vehicle
}public class broom extends vehicle
}
public abstract class food
public void printname()
}public class mushroom extends food
}
public abstract class weapon
public class ak47 extends weapon
}public class magicstick extends weapon
}
建立抽象工廠
public abstract class abstractfactory
public class defaultfactory extends abstractfactory
@override
public vehicle createvehicle()
@override
public weapon createweapon()
}
public class magicfactory extends abstractfactory
@override
public vehicle createvehicle()
@override
public weapon createweapon()
}
新增客戶端**:
public class test
}
總結:工廠方法與抽象工廠最大的區別和各自的優缺點:
對於普通的工廠,可以在產品這個維度進行擴充套件,可以產生新的產品和新的產品的工廠,但是如果產生產品系列(一系列不同類產品的具體產品),會出現工廠類氾濫的問題。抽象工廠解決這個問題,能產生新的產品系列。
而如果需要增加新的產品品種的話,這是需要修改抽象工廠介面增加新的方法,然後所有實現工廠增加新的方法。
大話設計模式系列 簡單工廠模式總結
emmm.之所以寫這個系列,是因為想去高階,感覺寫自己 不夠精簡,亢沉臃腫 想寫好寫優雅寫優秀,卻不知道是不是優秀,模稜兩可的感覺 想去入手原始碼,卻不知道從拿下手,又或者說看不懂,為什麼這麼寫。所以想入手設計模式系列,當然這些理解或者示例 是建立在 大話設計模式 程杰著的基礎之上的。感覺這本書還是...
設計模式 工廠系列
簡單工廠 特點 工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,客戶端中避免了和具體產品的依賴。缺點 當要繼續增加運算類時,需要在工廠類中增加相應的邏輯。違背了開放 封閉原則。工廠方法 特點 對每乙個產品都有對應的工廠,當增加新產品 在這裡就是增加運算類 時,只需要增加運算類和...
JAVA系列 設計模式 工廠模式
定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。類圖 這個我們平時接觸的比較多了,直接看 吧。注意要區分和抽象工廠的區別。抽象工廠設計模式 package factory 定義工廠方法所建立的物件的介面。author administrator public inte ce iworkf...