上週學習工廠模式:
但是覺得是headfirst讓人能夠更加清楚的了解,看了些許,就做了如下筆記:
1、使用少量具體類,當**針對介面而寫,可通過多型,讓任何新類實現該介面。
2、通過由一種固定的pizza,衍生出來口味各有千秋的cheese,greek口味的披薩,當越來越多的口味需要被滿足,在orderstory裡面就會不斷的修改建立**來產生不同pizza,違反了開放閉合原則。這時候就需要找出變化的**和不變的**,將變化的**封裝起來放到乙個物件上,新的物件即為「工廠」,專門處理建立物件的細節,只管如何建立pizza。
3、工廠裡面有對外提供例項化物件的方法。
4、在需要建立例項的地方加上工廠的引用,在構造器中需要乙個工廠作為引數,通過方法來建立想要的物件。這樣就沒有具體例項化操作而是使用工廠物件的方法。
5、其中pizzstory可以通過工廠的方法取得披薩的例項,而******pizzafactory裡面會將createpizza宣告為靜態的,有乙個抽象類pizza,實現一些方法,子類會實現這個超類的某個方法。
將客戶端的**和建立例項化的**隔離,這樣的**具有擴充套件性,不是只有乙個客戶能夠建立。
6、工廠方法模式通過讓子類決定該建立的物件是什麼,來達到物件建立的過程封裝的目的。
7、產品的「實現」和「使用」應該是解耦的
8、使用靜態常量和列舉(enum)可以避免字串傳入引數傳錯。
9、簡單工廠把全部的事情,在乙個地方處理完了,然而工廠方法確是乙個框架,讓子類決定要如何實現。
10、要依賴抽象,不要依賴具體類(依賴倒置原則)
11、指導方針:
a :變數不可以持有具體類的引用(使用new就會持有具體類)
b:不要讓類派生自具體類(避免依賴,派生抽象)
c:不要覆蓋基類中已經實現的方法(基類已實現的方法,應該由所有子類共享)
12、介面和超類的區別
a、介面是做什麼,類是怎麼去做
b、介面是抽象類的更上層,抽象類裡面的方法可實現,可抽象,但是介面的方法都是抽象的,不可以實現
c、介面可以多實現,而類是單繼承的
d、介面的基本型別是static的,而抽象類不是,為什麼是static的因為被定義為static的常量可以隨類的載入而存在,介面是沒有例項化物件的,要是沒有用static修飾的常量是屬於類的,介面就擁有不了。
簡單工廠方法,工廠方法,抽象工廠方法
以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...
python裡面的工廠模式
工廠模式 工廠模式 是乙個在軟體開發中用來建立物件的設計模型。使用工廠模式的應用場景 當不知道使用者想要建立什麼樣的物件時可以使用?工廠模式。乙個手機工廠模式 class phone object defpicture self print 照相 def call self print 打 clas...