2017.4.9 工廠模式1

先是大概看了下,介紹工廠模式的篇幅有些略長啊,有些不太愿意看了。
在書中先是介紹了“簡單工廠”,就是利用一個方法生成實例對象,在別的語言中通常用靜態實現,在OC中往往是利用+標識的類方法實現,簡單的理解就是避免用new生成實例的方法。直接用類方法進行生成新當前類實例的方法被書中介紹成“簡單工廠方法”。
根據書中的定義:
通過讓子類決定該創建的對象是什么,來達到將對象創建的過程封裝的目的--------工廠方法模式
如果按照該定義作為正確評判工廠方法模式的正確準則的話,我們用+標識的方法,僅僅是類方法,并非是某一種設計模式,并且書中介紹簡單工廠模式僅僅是大家約定俗成的一種書寫習慣,談不上是什么模式。
但是核心思想都是我們調用直接調用一個方法去生成實例,相比我們直接使用new 進行實例化有什么好處呢?
好處就是 我們可以更改這個方法的具體實現,并且不會更改原有調用方的代碼邏輯,這也體現了封閉的原則,我們可以在該方法中實例化出對應的子類,也就是調用方從來不關心具體是哪個實例,只要我能調用出對應的方法就好。利用多態,做到更改函數的具體實現,而這樣做的一切,都不會影響調用方--------即調用方可以不更改任何代碼,僅僅更改工廠函數(瞎起的名,懂這個意思就好)具體生成子類的策略,就能實現處理不同場景的功能,這樣的一切更改對于調用方 都是無感知的。
OO的封裝、繼承、多態思想還需要加強,多態的影子中在設計模式中太常見了。
值得注意的是,在我當初學這個模式的時候有些想不通的是,直接在我們直接在調用類的等號左邊直接用父類,等號右邊直接實例化子類不也是達到了同樣的效果么?調用方的代碼就也就改了一處,后來發現這種想法是略傻逼的。在代碼實現上判斷耦合程度最簡單的方式就是看#import引入的類是否多,如果引入過多的類則證明改類會和很多類都有聯系,即和很多類存在耦合,如果按照剛才方式,做了一件事不僅引入了父類也引入了子類,相比別人做一件事只引入一個類是不是辦的優點傻逼呢?
所以具體的實例化過程還是都放在工廠方法中實現比較穩妥,這樣調用方僅僅引入父類即可,而且一行代碼都不用更改!
盡量以后設計的時候,盡量多考慮依賴接口,而不是依賴實現編程,這是為了以后即使需要變動,盡量保證變動較少的原則。這些目前看都是簡單工廠所做的,工廠模式 目前還沒真理解,只是有點模糊的理解,屬于半吊子階段中。

一個正式的工廠方法模式的介紹:
定義一個創建對象的接口,但由子類決定要實例化的類是哪一個,工廠方法讓類吧實例化推遲到子類。
就是用方法封裝了實例化的過程,調用方都會當作父類去使用,而實際實例了哪個類都是由工廠函數決定了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 設計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類、模塊、函數等等)應該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 3,879評論 3 14
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 設計模式匯總 一、基礎知識 1. 設計模式概述 定義:設計模式(Design Pattern)是一套被反復使用、多...
    MinoyJet閱讀 3,978評論 1 15
  • 現在不打卡了,改為每天日常,無需在疊加日子,因為讓自己每天不是任務,是日常,堅持做些有意義的事 練字,記單詞記單詞...
    雷帥帥閱讀 190評論 0 0