1. 程式人生 > >iOS工廠模式的實質性總結

iOS工廠模式的實質性總結

最近在公司搞分享活動,索性就分享了工廠模式這個看似大家都不重視的設計模式。實際上開發過程中用到的場景不少的。
建議大家同時看著demo和文件分析瞭解工廠模式。
這篇文章目的不是讓你立馬都可以使用這個模式,而是能夠在思想上有一種工廠模式的意識。

初級認識

工廠模式一般理解就是減少new建立物件的方式,用介面的方式來返回一個物件,而new建立的方式被封裝了。
這個認識不足以理解到工廠方式的真正目的。

========================================================================

整體介紹

一: 工廠模式主要是為建立物件提供了介面。工廠模式一般分為三類:
1. 簡單工廠模式(Simple Factory)
2. 工廠方法模式(Factory Method)
3. 抽象工廠模式(Abstract Factory)

這三種模式從上到下逐步抽象,並且更具一般性。    
還有一種分類,就是將簡單工廠模式看為工廠方法模式的一種特例,兩個歸為一類。兩者皆可。

二: 什麼樣的情況下我們應該記得使用工廠模式呢?大體有兩點:
1.在編碼時不能預見需要建立哪種類的例項。
2.系統不應依賴於產品類例項如何被建立、組合和表達的細節

========================================================================

簡單工廠模式

簡單工廠模式的元素:
1. 工廠(Factory)角色:接受客戶端的請求,通過請求負責建立相應的產品物件。
2. 抽象產品(Abstract Product)角色: 是工廠模式所建立物件的父類或是共同擁有的介面。可是抽象類或介面。
3. 具體產品(ConcreteProduct)物件:工廠模式所建立的物件都是這個角色的例項。
簡單工廠模式的演變:
1.)當系統中只有唯一的產品時,可以省略抽象產品。這樣,工廠角色與具體產品可以合併。
簡單工廠模式的優缺點:
1.)工廠類含有必要的建立何種產品的邏輯,這樣客戶端只需要請求需要的產品,而不需要理會產品的實現細節。
2.)工廠類只有一個,它集中了所有產品建立的邏輯,它將是整個系統的瓶頸,同時造成系統難以拓展。
3.)簡單工廠模式通常使用靜態工廠方法,這使得工廠類無法由子類繼承,這使得工廠角色無法形成基於繼承的等級結構。
4.)簡單工廠模式會包含過多的判斷條件,維護起來不是特別方便。

工廠方法模式

工廠方法模式的元素:
creator(建立者)
product(產品)

工廠模式:在基類中定義一個用於建立物件的介面,讓子類決定例項化哪一個類 ,工廠方法要解決的問題是物件的建立時機。它提供了一種擴充套件的策略,很好地符合了開放封閉原則。工廠方法也叫做虛構造器(Virtual Constructor)

工廠方法模式相比簡單工廠模式:
1:工廠方法模式克服了簡單工廠模式違背開放-封閉原則的缺點,保持了封裝物件建立過程的優點。
2:要更換物件時,無論用簡單工廠模式還是工廠方法模式,都可以不用做大的改動,就可以實現,降低客戶程式與產品物件的耦合。
3:工廠方法模式是簡單工廠模式的進一步抽象和推廣,缺點是,每加一個產品,就要加一個產品工廠的類,增加了開發量。

=======================================================================

抽象工廠模式

一般來說,抽象工廠最簡單形態也至少有4個元素:
* 客戶端(client)
* 工廠(factory)
* 產品A(product A)
* 產品B(product B)

抽象工廠模式與工廠方法模式的聯絡與區別
聯絡: “抽象工廠”模式依賴於“工廠方法”模式。抽象工廠強調的是前面的動詞“抽象”,
也就是說,將工廠方法模式中的工廠方法抽象出來的那個”動作或設計”就是“抽象工程”模式了。
---------------------------------
工廠方法模式(一個產品等級結構) :
一個抽象產品類,可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類只能建立一個具體產品類的例項。
抽象工廠模式 (多個產品等級結構) :
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。
一個抽象工廠類,可以派生出多個具體工廠類。
每個具體工廠類可以建立多個具體產品類的例項。

區別:工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。
         工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個。

==========================================================================

總結

以花園種菜為例
1.如果一個花園只種蔬菜類,那麼就用簡單工廠就可以了.
2.如果花園蔬菜品種繁多.得用工廠方法才可以,把共有的東西抽象出來.
3.如果要擴大後花園的規模,比如一個在北方,一個在南方,這樣工廠方法就無法實現了,就應當用抽象工廠,把各種各樣的植物,又組成一個後花園.
簡單工廠是一個工廠只生產一類的產品,面對的是具體的類,工廠方法是可以生產不同的產品,把公共的方法抽象出來,然後進行建立各種各樣的產品.

相關推薦

iOS工廠模式實質性總結

最近在公司搞分享活動,索性就分享了工廠模式這個看似大家都不重視的設計模式。實際上開發過程中用到的場景不少的。 建議大家同時看著demo和文件分析瞭解工廠模式。 這篇文章目的不是讓你立馬都可以使用這個模式,而是能夠在思想上有一種工廠模式的意識。 初級認識 工

C++設計模式之-工廠模式總結

ide char* break product 有一個 對象 ride pan 多態 工廠模式分為3種,即簡單工廠模式、工廠方法模式、抽象工廠模式,其實大同小異,總結下來就是: 簡單工廠模式:一個工廠,多個產品。產品需要有一個虛基類。通過傳入參數,生成具體產品對象,並利用

iOS 工廠模式

1. 概念工廠模式用於建立某個類的子類例項的要解決的問題:在其他地方,不確定要建立那個具體的子類的時候使用2. 程式碼1.Animal 動物類#import <Foundation/Foundat

IOS 工廠模式的面向協議程式設計思想

前言 OOP開發有個原則是針對抽象程式設計而不是針對具體程式設計,實際的軟體開發中,因為時間和專案進度等客觀不可抵抗和主觀的因素,我們偏向使用最簡單的的方式去實現功能,而沒有考慮到未來可能會有的擴充套件問題,導致未來發生擴充套件的時候出現了維護性的災難,軟體模組不好擴

簡單工廠模式學習總結(C#)

    本人是一枚女程式“媛”,本科計算機出身,研究生轉的軟體,程式碼量屈指可數。哈哈。。。最近在看一本設計模式的書,裡面的內容感覺講的挺不錯的,也就在這裡隨手寫一些筆記,大家可以共勉,有什麼不對的或者需要改進的地方歡迎各位批評指正。。。    以前本科寫程式碼只注重執行結果

對設計模式總結之簡單工廠與策略模式

mage 建立 不變 href catch nag 實現類 初步 cti 前言 面向對象編程追求的本質-提高擴展性、可維護性、靈活性和復用性。合理利用面向對象6個原則,能夠很好的達到要求。如何利用好就是至關重要的了,前人總結了23+個設計模式能夠讓初學者更容易

iOS經常使用設計模式——工廠方法(簡單工廠模式工廠方法模式, 抽象工廠模式

csdn bst 設計 cto mod 基類 load 引用 角色 1. 簡單工廠模式 怎樣理解簡單工廠,工廠方法。 抽象工廠三種設計模式? 簡單工廠的生活場景。賣早點的小攤販。他給你提供包子,饅頭,地溝油烙的煎餅等,小販是一個工廠。它生產包子,饅頭,地溝油烙的

工廠模式 - 總結

實例 靜態工廠 工廠方法模式 簡單工廠模式 靜態工廠模式 決定 基礎上 簡單工廠 靜態 1、簡單工廠模式   簡單工廠模式又叫靜態工廠模式,核心為一個工廠類,工廠類中又一個靜態工廠方法。靜態工廠方法通過傳入的參數進行判斷從而決定生成哪個實例。 2、工廠方法模式   工廠

總結工廠模式---簡單工廠工廠方法、抽象工廠

ati tac 自己的 object 獲得 抽象工廠 nbsp art 工廠類 簡單工廠 首先,我們先看一個簡單工廠的例子: #coding=utf-8 class Mercedes(object): """梅賽德斯 """ def __repr_

設計模式學習總結(1)簡單工廠模式工廠方法模式、抽象工廠模式

設計模式學習 做了幾個專案,發現設計模式的好處還是很多的,這東西就是隻有你真正用到的時候才知道他的好處,否則學了也不知道所以然。所以設計模式學習我認為可以在先進行幾個專案後,再來學習,這樣學習的效果和感受才是最好的。 這次是做一個學習的筆記,內容還是主要以我看的兩本書《大

設計模式4-工廠方法模式(FactoryMethod)、抽象工廠模式(AbstractFactory)解析+案例實踐+總結

本文是對面向物件設計模式--工廠方法模式(FactoryMethod)和抽象工廠模式(AbstractFactory)的解析,主要分為定義解析、簡單工廠方法講解、工廠方法模式講解、抽象工廠模式講解、多案例練習加深對工廠方法模式與抽象工廠模式的理解、最後總結知識要點。 第一篇

移動開發之設計模式-工廠模式(IOS&Android)

資源 完全參照 工廠模式|菜鳥教程 ,但不包括IOS程式碼 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是

移動開發之設計模式-抽象工廠模式(IOS&Android)

資源 完全參照 抽象工廠模式|菜鳥教程 ,但不包括IOS程式碼 抽象工廠模式 抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 在抽象

iOS-工廠方法模式的運用

原文釋出在個人簡書,更多內容歡迎關注筆者簡書 ,評論、互相交流請到簡書,謝謝! 設計模式這個高大上的詞似乎每天都在聽。設計模式在服務端設計時體現的比較明顯。雖然移動端設計模式沒有服務端那麼明顯,但是做為移動端開發人員掌握各種設計模式的思想有助於提高程式碼質量。

iOS 21種設計模式工廠模式

感謝 感謝《Pro Objective-C Design Pattern for iOS》一書,這個部落格系列由很多靈感源自次書。同時,也感謝Wiki以及一些部落格博主。每篇文章最後,都會列出參考連結。 這個系列的文章(程式碼Swif

設計模式(一) 工廠模式 五種寫法總結

系列開篇瞎BB 設計模式相關的文章學習與總結,一直有意為之,一直又覺得時機不到。 一 是怕自己程式碼經驗還不夠,學習了也不懂,強行理解沒有意義。 二 是怕自己學習了以後總結出來,萬一有不對的地方,誤人子弟。 而在現在的公司摸爬滾打半年後,感覺

iOS 三種工廠模式(簡單工廠模式工廠模式、抽象工廠模式)

原文轉載 說明:在我理解中,這裡所謂的抽象,其實就是制定某一個介面規範。具體體現在程式碼裡,就是設定一個基類,基類遵守某一套介面規範,但是其具體的實現則通過子類化來完成。當然,這裡我們也可以使用協議來規範這套介面規範。相對的,具體就是具有對抽象做子類化之後產生的實體。 1

iOS 類的抽象和繼承:類族與工廠模式~詳解

//聯絡人:石虎  QQ: 1224614774暱稱:嗡嘛呢叭咪哄 一、Objective-C類族和工廠模式 /**        連結http://blog.csdn.net/sh

iOS 設計模式工廠方法模式(FactoryMethod)

工廠方法模式克服了簡單工廠模式違背開放-封閉原則的缺點,保持了封裝物件建立過程的優點。 要更換物件時,無論用簡單工廠模式還是工廠方法模式,都可以不用做大的改動,就可以實現,降低樂樂客戶程式與產品物件的耦合。 工廠方法模式是簡單工廠模式的進一步抽象和推廣,缺點

iOS架構師_工廠模式

簡單工廠: 例子: 模式圖 程式碼示例: 建立水果工廠類FruitsFactory 再建立水果類Fruits,以及Fruits的子類Apple,Orange,Banana FruitsFactory.h #import <Foun