1.引入: 我們在程式設計的時候,每當」new」乙個物件之後,這個物件就依賴於這個類了。如果在後期的維護過程中由於某些原因需要修改一下這個類,則唯一的做法就是開啟源**,進行修改,修改所有與這個物件有關的操作。這對我們是非常不利的。
問題出來了:物件不能應對「具體例項化型別」的變化
2.解決思路:將例項化這個操作封裝起來,我們可以把」new」這個操作移交乙個具體的類,由它去負責根據我們的條件建立具體類的例項,也就是下面要說的「簡單工廠模式」。
3.簡單工廠模式的定義:
提供乙個建立物件例項的功能,而無須關係其具體實現。被建立例項的型別可以是介面、抽象類,也可以是具體的類。
4.簡單工廠模式的組成:
工廠角色(creator):是簡單工廠模式的核心,它負責實現建立所有具體產品類的例項。工廠類可以被外界直接呼叫,建立所需的產品物件。
抽象產品角色(product):是所有具體產品角色的父類,它負責描述所有例項所共有的公共介面。
具體產品角色(concrete product):繼承自抽象產品角色,一般為多個,是簡單工廠模式的建立目標。工廠類返回的都是該角色的某一具體產品。
5.具體**實現如下:(簡單的例子)
a.先寫乙個汽車的介面;
inte***ce car
public void stop()
}
public class ford implements car
public void stop()
c.工廠角色: 現在由工廠來建立 物件.根據條件來建立.
public class factory else if (「ford」.equals(type))
return c; } }
d.測試類,三種都行,這裡所講的簡單工廠模式是第三種方式,這是一種很好的設計思維,在這個基礎上可以拓展更多,對初學者來說是一種啟發。
public class test }
執行結果:
工廠模式 簡單工廠
簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...
工廠模式 簡單工廠
工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...