1. 程式人生 > >一.簡單工廠模式

一.簡單工廠模式

簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。
簡單工廠模式包含著以下三個角色
Factory:工廠角色
工廠角色負責實現建立所有例項的內部邏輯
Product:抽象產品角色
抽象產品角色是所建立的所有物件的父類,負責描述所有例項所共有的公共介面
ConcreteProduct:具體產品角色
具體產品角色是建立目標,所有建立的物件都充當這個角色的某個具體類的例項。

舉個例子.比方說我們有一個Person類.
我們通過這個Person類來”建立”一個人.

@interface Person : NSObject
@end
@implementation Person
@end
@interface Male : Person
@end
@implementation Male
@end
@interface Female : Person
@end
@implementation Female
@end

比如我們想快速建立男人,女人.那麼,我們會新增一個Gender的屬性


typedef NS_ENUM(NSUInteger, PersonGender) {
    PersonGenderMale,
    PersonGenderFemale,
};

@interface
Person : NSObject
///性別 @property (nonatomic ,strong) NSString *gender; + (instancetype)creatWithGender:(PersonGender)gender; - (void)initWithGender:(PersonGender)gender; @end

這樣建立的好處是,我們不用管類的內部在建立男女物件的時候是如何處理的.只需要在建立的時候傳入男人或者是女人.就能得到相應的男人或者是女人物件.在快速建立物件的時候十分有效.
現在我們假設出現了一個新的性別.那麼就需要去這個建立方法裡面做相應的邏輯修改.一個兩個需求可能還比較好.但是當這個類越來越大的時候.這個簡單工廠模式就突出了他的坑爹的地方了擴充套件困難,一旦新增新"產品"就不得不修改工廠邏輯,在"產品"型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。

簡單工廠模式的實質是由一個工廠類根據傳入的引數,動態決定應該建立哪一個產品類(這些產品類繼承自一個父類或介面)的例項。

也就是說簡單工廠模式是由同一個父類管理的建立不同子類的一種設計模式.通過從父類的建立方法裡面傳入必須的引數來判斷建立什麼子類(這樣拓展之後父類的判斷邏輯就會增大).

相關推薦

()簡單工廠模式

pan 銷售 對象 ros sta 水果 which 經驗 string (一)簡單工廠模式 作者:林子 時間:2014年8月 出處:http://blog.csdn.net/u013011841 聲明:歡迎指出錯誤 1、為什麽學習設計模式? 設計模

java設計模式 實驗-簡單工廠模式

簡單工廠模式 班級:軟體工程1班 姓名:張雨 學號:2014416558 一、實驗目的: 簡單工廠設計模式應用 二、實驗內容: 題目(一): 使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入引數M,則返回一個Man物

.簡單工廠模式

簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,

設計模式() 簡單工廠模式

控制 pos created 判斷 方法 lse tor 小店 des layout: post title: 設計模式(一) 簡單工廠模式 tags: Design_Patterns categories: Design_Patterns description: 我

簡單工廠模式

returns 原則 分離 問題 簡單的 編號 tor 在一起 分享 設計模式分類:  創建型模式。  結構型模式。  行為模式。   23種設計模式,如何記。面向對象的系統中有很多對象,創建型模式解決的問題就是如何創建對象,何時創建對象,它努力的讓代碼不要太多的關註對象的

(1)簡單工廠模式

ner log factory auto 過多 測試 extend 耦合度 工廠 1 設計模式中經常用到程序設計中的封裝,繼承,多態的思想。不同的設計模式使代碼更加靈活,容易擴展。 2 設計模式中一般都會存在父類的概念,父類一般是抽象類,內部維護的變量,用於子類繼承;維護的

(原創)我眼中的設計模式系列之簡單工廠模式()

int 業務 text 們的 acc 現在 rgs sub reat 簡單工廠模式   在日常的軟件開發中,我們一般都是按照模塊來劃分工作的。 場景一:   試想我們現在有這麽一個模塊,為其他的模塊提供服務,比如說我們調用了好幾個外部接口,統一返回XML字符串,每個接口返回

Java設計模式)之建立型模式工廠模式簡單工廠模式+工廠方法模式

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說,許多型別物件的建立需要一系列的步驟:你可能需要計算或取得物件的初始位置;選擇生成哪個子物件例項;或在你生成你需要的物件

Java 設計模式):簡單工廠模式

參考連結:簡單工廠模式-Simple Factory Pattern 1. 模式概述 定義:定義一個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態方法,因此簡單工廠模式又被稱為靜態工廠方法模式。 簡

設計模式)從“簡單工廠模式”升級為“工廠方法模式

工廠模式的引入是為了管理物件的構造,對使用者遮蔽構造過程,使用者只從工廠拿取新物件。 簡單工廠模式 用一個場景介紹簡單工廠模式:某工廠想包攬所有產品生產,不僅提供很多不同型別的產品(iPhone 5,6,7...),還時不時生產新型別的產品(三星S8),而且客戶不關係產品

【設計模式】()-簡單工廠模式和策略模式

前言 最近開始和春哥,張鐸 ,銀平討論設計模式,成立了一個小菜變大鳥的小組,每天討論一個模式,並且把這個模式搞懂,每學一個新的模式,再回顧一下之前學的模式。這兩天學了簡單工廠模式和策略模式,發現兩個模式有很多相同之處,下面用商場促銷的例子來對兩個模式總結一下。 簡單工廠模式 1.

設計模式簡單工廠模式

先來考慮一道題目: 請用C++、Java、C#或VB.NET任意一種面嚮物件語言實現一個計算器控制檯程式,要求輸入兩個數和運算子號,得到結果。 題目很簡單,我們腦海裡已經有了初步的思路和答案,寫出來可能是這樣的: class Program { static vo

工廠三兄弟之簡單工廠模式

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                工廠模式是最常用的一類建立型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將要學習的簡單工廠模式是工廠方法模式的“小弟”

大話設計模式簡單工廠模式

簡單工廠模式就是解決不同場景下例項化物件的問題。 問題場景:做一個簡單的計算器功能,實現加減乘除的功能,要實現這個功能很簡單,但是卻又要使用到面向物件的方法,降低程式的耦合度,符合開閉原則,就沒有想象中那麼簡單,demo如下: 首先建立一個抽象的父類 Calculate,

簡單工廠模式工廠模式中最簡單

場景:要實現不同型別的彈窗,警示框、提示框、確認框。這些彈框存在一些相似的地方,也存在一些不同的地方。可以將不同的屬性作為引數傳遞進來。 function creatPop(type,text){ // 建立一個物件,並對物件拓展屬性和方法 var o = new Object();

C# 設計模式簡單工廠模式(unity演示)

目錄   近來打算過一下設計模式那就從簡單工廠模式開始吧。而使用設計模式就是為了提高“可維護”、“可複用”、“可擴充套件”來展開的。工廠模式可分為三類,即:簡單工廠模式、工廠模式和抽象工廠模式。 一、簡單工廠模式 1、簡單工廠模式(S

使用第三方框架解耦的種思路—簡單工廠模式的運用

前言: 能在平時的coding中,使用到設計模式,是一件非常細節的事,但恰恰也是走向高階的開端,同樣一段程式碼,不同的人寫,水平是不一樣的。今天是由gdutxiaoxu投稿本公眾號授權釋出的,gdutxiaoxu之前寫的《記一次360面試》也是在本公眾號獨家釋出的,是老朋友了。gdutxiao

大話設計模式簡單工廠模式

一.模式定義 簡單工廠模式也稱為靜態工廠模式。屬於類建立型設計模式。實質是一個“”工廠系統“”可以產生出多種不同的”產品物件”,使用者不需要知道“”產品物件“”是怎麼產生的,只需要知道關於該“產品物件”的關鍵引數,將該引數傳給“工廠系統”就可以由工廠系統生產出對應的產品。

【一起學設計模式】狀態模式+裝飾器模式+簡單工廠模式實戰:()提交個訂單我到底經歷了什麼鬼?

前言 之前在我的部落格(一枝花算不算浪漫)中已經更新過兩篇設計模式相關的內容 【一起學設計模式】策略模式實戰一:基於訊息傳送的策略模式實戰 【一起學習設計模式】策略模式實戰二:配合註解 幹掉業務程式碼中冗餘的if else... 【一起學設計模式】訪問者模式實戰:許可權管理樹刪節點操作 【一起學設計模式】命

【C++設計模式】C++簡單工廠模式

#(1)定義 定義一個簡單工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。 #(2)結構 簡單工廠模式有以下的結構: * 工廠(Factory):根據客戶提供的具體產品類的引數,建立具體產品例項; * 抽象產品(AbstractProduct):具體產品類的基類,包含建立產