1. 程式人生 > >23種設計模式—之簡單工廠模式

23種設計模式—之簡單工廠模式

1、模式定義

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

2、模式結構

簡單工廠模式包含如下角色:
Factory:工廠角色。
Product:抽象產品角色。

ConcreteProduct:具體產品角色。

現在來看看這個例子:

1.Person 介面

package simple.factory.com;


//Person 介面
public interface Person {
	public void howWho();
}

2.Chinese類

package simple.factory.com;


//實體類    實現  Person 介面
public class Chinese implements Person {

	@Override
	public void howWho() {
		// TODO Auto-generated method stub
		System.out.println("我是中國人");
	}

}

3.American類

package simple.factory.com;


//實體類    實現  Person 介面
public class American implements Person {

	@Override
	public void howWho() {
		// TODO Auto-generated method stub
		System.out.println("我是美國人");
	}

}
4.工廠類
package simple.factory.com;


//簡單的小工廠設計模式
public class WriterPactory {
	public static void show(Person p){
		p.howWho();
	}
}

5.測試類
package simple.factory.com;

/*
 * 簡單的工廠模式:
 * 就是使用者只需要吃蘋果,而不是種蘋果再吃【麻煩】。
 * 使用者只需要告訴工廠你的需要:
*/
public class TestTwo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person p1,p2,p3,p4;
		p1= new Chinese();
		p2= new American();


		WriterPactory.show(p1);
		WriterPactory.show(p2);
	}

}



6. 模式分析

       將物件的建立和物件本身業務處理分離可以降低系統的耦合度,使得兩者修改起來都相對容易。

在呼叫工廠類的工廠方法時,由於工廠方法是靜態方法,使用起來很方便,可通過類名直接呼叫,而且只需要傳入一個簡單的引數即可,在實際開發中,還可以在呼叫時將所傳入的引數儲存在XML等格式的配置檔案中,修改引數時無須修改任何Java原始碼。

        簡單工廠模式最大的問題在於工廠類的職責相對過重,增加新的產品需要修改工廠類的判斷邏輯,這一點與開閉原則是相違背的。

        簡單工廠模式的要點在於:當你需要什麼,只需要傳入一個正確的引數,就可以獲取你所需要的物件,而無須知道其建立細節。

7.模式優缺點

7.1簡單工廠模式的優點:

         工廠類含有必要的判斷邏輯,可以決定在什麼時候建立哪一個產品類的例項,客戶端可以免除直接建立產品物件的責任,而僅僅“消費”產品;簡單工廠模式通過這種做法實現了對責任的分割,它提供了專門的工廠類用於建立物件。

         客戶端無須知道所建立的具體產品類的類名,只需要知道具體產品類所對應的引數即可,對於一些複雜的類名,通過簡單工廠模式可以減少使用者的記憶量。

         通過引入配置檔案,可以在不修改任何客戶端程式碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統的靈活性。

7.2簡單工廠模式的缺點

        由於工廠類集中了所有產品建立邏輯,一旦不能正常工作,整個系統都要受到影響。

使用簡單工廠模式將會增加系統中類的個數,在一定程式上增加了系統的複雜度和理解難度。

       系統擴充套件困難,一旦新增新產品就不得不修改工廠邏輯,在產品型別較多時,有可能造成工廠邏輯過於複雜,不利於系統的擴充套件和維護。

簡單工廠模式由於使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。

8.模式適用環境

在以下情況下可以使用簡單工廠模式:

        工廠類負責建立的物件比較少:由於建立的物件較少,不會造成工廠方法中的業務邏輯太過複雜。

客戶端只知道傳入工廠類的引數,對於如何建立物件不關心:客戶端既不需要關心建立細節,甚至連類名都不需要記住,只需要知道型別所對應的引數。

看看這篇

相關推薦

23設計模式簡單工廠模式

1、模式定義         簡單工廠模式(SimpleFactory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,

設計模式 簡單工廠模式詳解

技術分享 接口 create [] 幫助 cut 小蘿莉 filter 類之間的關系 定義:從設計模式的類型上來說,簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠

Asp.Net 設計模式 簡單工廠模式

相關 如果 cnblogs 獲取 自動 ber c# thread operation 主要思想:      public static Operation CreateFactory(string ope) { //實例化空父類,讓

設計模式簡單工廠模式

pos 示例 概念 font 代碼示例 情況 strong size span 概念    應用場景   一個類多個子類,也就是多態的情況,當我們 代碼示例設計模式之簡單工廠模式

設計模式簡單工廠模式(創建型)

== 邏輯 設計 技術分享 對象創建 代碼 extends 工廠類 font 定義 簡單工廠模式又稱靜態工廠模式。可以根據參數的不同返回不同類的實例。定義一個類來創建其它類的實例。 角色 簡單工廠模式包含如下角色 Factory:工廠角色 Product:抽象產品角色 Co

golang設計模式簡單工廠模式

簡單工廠模式 wiki: 簡單工廠模式並不屬於 GoF 23 個經典設計模式,但通常將它作為學習其他工廠模式的基礎,它的設計思想很簡單,其基本流程如下: 首先將需要建立的各種不同物件(例如各種不同的 Chart 物件)的相關程式碼封裝到不同的類中,這些類稱為具體產品類,而將它們公共的程式碼

設計模式簡單工廠模式學習

之前瀏覽了一遍大話設計模式,看的激情四射,感覺寫的很好,但是瞄了一遍感覺收穫不多,於是決定手敲遍各種模式程式碼,今天敲了一遍簡單工廠模式程式碼,收穫滿滿,獲益良多。 引用書中標題的一句話: 程式碼無錯就是優? --------------------------簡單工廠模式 首先是一個實現計算

大話設計模式簡單工廠模式(Java版)

大話設計模式——第一章(簡單工廠模式)   題目:請用C++、Java、C#或VB.NET任意一種面嚮物件語言實現一個計算器控制檯程式,要求輸入兩個數和運算子號,得到結果。 import java.io.Console; import java.util.Scanner; /**

設計模式簡單工廠模式( Simple Factory Pattern )

1. 簡單工廠模式( Simple Factory Pattern ) 目錄 簡單工廠模式( Simple Factory Pattern ) 模式動機 模式定義 模式結構 時序圖 程式碼分析 模式分析 例項

C#基礎 二十 設計模式簡單工廠模式及介面

前言       這幾天看了這些視訊進行了一些總結,我是打算先看完C#視訊然後繼續看設計模式這本書的,但是視訊中提到了一部分設計模式中的內容,那麼我也多少的總結一下吧,有助於後邊對設計模式的學習! 交流與互動

設計模式 - 簡單工廠模式

一、什麼是簡單工廠模式 簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,一個抽象的產品類,可以派生出多個具體的產品類,它們都具有共同的父類。 我們再來看下簡單工廠模式的U

Java設計模式簡單工廠模式

工廠模式:就是我們最常用的例項化物件模式,是用工廠方法代替new操作的一種模式。 實現步驟:使用工廠物件,根據傳遞的引數建立物件 ex: /** * 簡單工廠模式:就是建立一個工廠專門用來new

Python設計模式簡單工廠模式

定義:不直接向客戶暴露物件建立的實現細節,而是通過一個工廠類來負責建立產品類的例項。 角色:工廠角色,抽象產品角色,具體產品角色。 優點:隱藏了物件建立程式碼的細節,客戶端不需要修改程式碼。 缺點:違反了單一職責原則,將建立邏輯集中到一個工廠裡面,當要新增新產品時,違背了開閉原則 程

設計模式簡單工廠模式(C#語言描述)

嚴格意義上來說,簡單工廠模式並不屬於GoF的23種設計模式,但是它是學習其他工廠模式的基礎和前提條件。理解了簡單工廠模式,學習工廠方法模式和抽象工廠模式會比較容易一些。 簡單工廠模式的定義 定義一個工廠類,他可以根據不同的引數返回不同類的例項。通常情況下,被建立的類的例項通常都具有共同的父類。

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

簡單工廠模式 一、定義 簡單工廠模式:又稱為靜態工廠方法模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個來負責其他類的例項,被建立的例項通常都具有

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

該部落格主要參考內容如下: 什麼是簡單工廠模式  簡單工廠模式(Simple Factory Pattern):又稱為靜態工廠方法(Static Factory Method)模式,它屬於類建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠

設計模式簡單工廠模式(simple factory pattern)

什麼是簡單工廠模式, 舉個不恰當的例子, 就說生產雪糕吧, 雪糕什麼形狀的都有, 有長方形,有圓形等等, 怎麼生產呢? 首先肯定是先造個機器, 然後弄幾個按鈕,上面依次寫上長方形, 圓形等等,我按長方形就給我出長方形的, 我按圓形的按鈕就給我出圓形的。 大概就是這樣接下來

筆記十三:設計模式簡單工廠模式工廠方法模式、抽象工廠模式

引言: 假設現在有一個超市(Market),超市銷售餅乾(Biscuit)、水果(Fruit)、飲料(Drink)三種食品。 按照常規,我們建立三個類:class Biscuit、class Fruit、class Drink。 class Bis

設計模式簡單工廠模式

通過多型製作一個簡單的計算器 Operation類: 1 public class Operation 2 { 3 private double _numberA = 0; 4 private double _numberB =

程式碼詳解設計模式簡單工廠模式

簡單工廠模式   例項:建立一個形狀介面和實現該介面的圓形和方形,然後定義形狀工廠。Demo演示類使用工廠來獲取不同的形狀物件。 優點: 遮蔽產品的具體實現,呼叫者只關心產品的介面。 擴充套件性高,如果想增加一個產品,只要擴充套件一個工廠類就可以。