设计模式(一)---简单工厂模式
1,簡介:簡單工廠模式,又稱為靜態工廠模式,是通過專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
2,簡單工廠模式的結構
2.1:簡單工廠的通用結構
2.2:示意性實現
2.3:從上圖可以看出,簡單工廠模式就是由一個工廠類根據傳入的參數來決定創建哪個產品的實例
簡單工廠模式涉及到工廠角色,抽象產品角色,以及具體產品角色等三個角色
2.3.1:工廠類角色:這個工廠類是簡單工廠模式的核心,含有與應用相關的業務邏輯,工廠類在客戶端的直接調用下創建產品對象,由一個具體的java類來實現
2.3.2:抽象產品角色:擔任這個角色的類是由工廠模式創建的對象的父類,或者是它們共同擁有的接口,抽象產品角色可以用一個java接口或者是抽象類來實現
2.3.3:具體產品角色:工廠模式創建的對象,都是這個角色的實例,具體產品角色由一個具體的java類來實現
2.4:源代碼
2.4.1:新建一個食物類的接口。
package SimpleFactory;/*** ******************************************************** * @ClassName: Food * @Description: 食物接口* ***********************************************************/ public interface Food {public void say(); }2.4.2:建立兩個具體產品類 ?實現食物接口
1:薯條類
package SimpleFactory; /*** ******************************************************** * @ClassName: Chips * @Description: 薯條實體類 實現食品接口 * ***********************************************************/ public class Chips implements Food{@Overridepublic void say(){System.out.println("我是薯條");} }2:麥香雞類
package SimpleFactory; /*** ******************************************************** * @ClassName: McChicken * @Description: 麥香雞實現類 實現食品接口 * ***********************************************************/ public class McChicken implements Food{@Overridepublic void say() {System.out.println("我是麥香雞");} }2.4.3:創建工廠類
package SimpleFactory; /*** ******************************************************** * @ClassName: SimpleFacory * @Description: 簡單工廠模式工廠類,根據傳過來的參數確定需要實例化的對象 * 返回實現類的父類類型 * ***********************************************************/ public class FoodFacory {public static Food getFood(String type){if(type.equalsIgnoreCase("Chips")){return new Chips();}else if(type.equalsIgnoreCase("McChicken")){return new McChicken();}else{System.out.println("沒有可以實例化的對象");return null;}} }2.4.4:創建測試類
package SimpleFactory; /*** ******************************************************** * @ClassName: SimpleFactoryTest * @Description: 簡單工廠模式測試類 * ***********************************************************/ public class SimpleFactoryTest {public static void main(String[] args){//實例化Chips chips = (Chips) FoodFacory.getFood("Chips");McChicken chicken = (McChicken) FoodFacory.getFood("McChicken");chips.say();chicken.say();} }2.4.5:運行測試類,得到如下結果
3:總結
3.1:優點:簡單工廠模式的核心是工廠類,這個類含有必要的判斷邏輯,可以決定在什么時候創建產品類的實例,而客戶端可以直接調用工廠類來創建實例,從而免除直接創建實例的責任,簡單工廠模式通過這種方式實現了對實例化責任的分割。
3.2:缺點1,將所有的實例化責任放在一個工廠類里面,如果工廠類不法正常工作,則整個系統崩潰。
?2,而在系統的后續擴展中,都需要修改工廠類,擴展較為困難。
?3,由于工廠類使用靜態方法作為工廠類,而靜態方法無法被子類繼承,因此,工廠角色無法形成繼承的等級結構。
轉載于:https://www.cnblogs.com/shun-gege/p/7451048.html
總結
以上是生活随笔為你收集整理的设计模式(一)---简单工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到自己的妈妈出轨是什么意思
- 下一篇: 设计模式范例代码