1. 程式人生 > >C#設計模式--工廠方法模式

C#設計模式--工廠方法模式

設計模式:

工廠方法模式(Factory Method Pattern)

介紹:簡單工廠模式是要在工廠類中通過資料來做個決策,在工廠類中的多個類中例項化出來其中一個要用到的類,做運算。而工廠方法模式則是他的一個的擴充套件,不在工廠類中做區分從而建立對應的類,而是把這個選擇決策權力交給使用類的使用者決定。可擴充套件性比簡單工廠模式要好很多

工廠方法模式類圖:

工廠方法模式C#程式碼舉例:

MobilePhone類手機類

1  public abstract class MobilePhone
2     {
3         public abstract void print();
4     }

Iphone 類 蘋果手機類

複製程式碼
1 public class Iphone : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是蘋果手機!");
6         }
7     }
複製程式碼

XiaoMI 類 小米手機類

複製程式碼
1  public class XiaoMI:MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是小米手機
"); 6 } 7 }
複製程式碼

SmarTisan類 錘子手機類

複製程式碼
1 public class SmarTisan : MobilePhone
2     {
3         public override void print()
4         {
5             Console.WriteLine("我是錘子手機!");
6         }
7     }
複製程式碼

MobilePhoneFactory 類 手機工廠類

1  public abstract class MobilePhoneFactory
2     {
3         public abstract
MobilePhone Create(); 4 }

IphoneFactory 類 蘋果手機工廠類

複製程式碼
1  public class IphoneFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new Iphone();
6         }
7     }
複製程式碼

XiaoMiFactory類 小米手機工廠類

複製程式碼
1  public class XiaoMiFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new XiaoMI();
6         }
7     }
複製程式碼

SmarTisanFactory類 錘子手機工廠類

複製程式碼
1  public class SmarTisanFactory:MobilePhoneFactory
2     {
3         public override MobilePhone Create()
4         {
5             return new SmarTisan();
6         }
7     }
複製程式碼

測試

(即使每次增加新的品牌,只需要增加新品牌的類,以及對應工廠即可使用,方便擴充套件)

複製程式碼
 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //建立蘋果手機工廠
 6             MobilePhoneFactory mobilePhoneFactoryIphone = new IphoneFactory();
 7             //蘋果手機工廠建立手機
 8             MobilePhone mobilePhoneIphone = mobilePhoneFactoryIphone.Create();
 9             //由蘋果工廠建立蘋果手機
10             mobilePhoneIphone.print();
11 
12 
13             //小米工廠生產小米手機
14             MobilePhoneFactory mobilePhoneFactoryXiaoMi = new XiaoMiFactory();
15             MobilePhone mobilePhoneXiaoMi = mobilePhoneFactoryXiaoMi.Create();
16             mobilePhoneXiaoMi.print();
17 
18 
19             //錘子手機工廠生產錘子手機
20             MobilePhoneFactory mobilePhoneFactorySmarTisan = new SmarTisanFactory();
21             MobilePhone mobilePhoneSmarTisan = mobilePhoneFactorySmarTisan.Create();
22             mobilePhoneSmarTisan.print();
23 
24             Console.Read();
25 
26         }
27     }
複製程式碼

執行結果:

相關推薦

Note8:C#設計模式工廠方法模式(VS 簡單工廠模式 & 抽象工廠模式

工廠方法模式 blog 抽象工廠 nbsp strong str cnblogs note 設計 一、資源說明 (1)本文有參考:http://www.cnblogs.com/zhili/p/FactoryMethod.html 待更!Note8:C#設計模式—工廠方法

C#設計模式——工廠方法模式

osc tor cas 模式 main csharp plan ofa mar 一、引言   在簡單工廠中講到簡單工廠模式的缺點,有一點是——簡單工廠模式系統難以擴展,一旦添加新產品就不得不修改簡單工廠方法,這樣就會造成簡單工廠的實現邏輯過於復雜,然而本專題介紹的工廠方法模

C++設計模式——工廠方法模式

問題描述 之前講到了C++設計模式——簡單工廠模式,由於簡單工廠模式的侷限性,比如:工廠現在能生產ProductA、ProductB和ProductC三種產品了,此時,需要增加生產ProductD產品;那麼,首先是不是需要在產品列舉型別中新增新的產品型別標識,然後,修改Fa

C#設計模式-工廠方法模式

using System; namespace TestCS { class Program { static void Main(string[] args) { CarFactory factory0 = new CarF

C++設計模式——工廠方法模式和抽象工廠方法模式

一、工廠方法模式 上面的簡單工廠模式的缺點是當新增產品的時候就要去修改工廠的類,這就違反了開放封閉原則,(類、模組、函式)可以擴充套件,但是不可以修改,於是,就出現了工廠方法模式。所謂工廠方法模式,是指定義一個用於建立物件的介面,讓子類決定例項化哪一個類。 #d

C#設計模式--工廠方法模式

設計模式:工廠方法模式(Factory Method Pattern)介紹:簡單工廠模式是要在工廠類中通過資料來做個決策,在工廠類中的多個類中例項化出來其中一個要用到的類,做運算。而工廠方法模式則是他的一個的擴充套件,不在工廠類中做區分從而建立對應的類,而是把這個選擇決策權力

PHP面向對象-設計模式 單例模式 簡單工廠模式 工廠方法模式

單例 nbsp 私有化 {} 意義 pan php代碼 get fun 1.單例模式   單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例。即一個類只有一個對象實例。   要實現每一個類只有一個實例

Java設計模式--工廠方法模式

必須 產品 str 應用程序 實現 工廠方法模式 調用 方法 png 角色 抽象工廠:擔任這個角色是工廠方法模式的核心,它是與應用程序無關的。任何在模式中創建對象的工廠類都必須實現這個接口。 具體工廠:擔任這個角色的是實現了抽象工廠接口的具體Java類。具體工廠角色含有與應

Java設計模式-工廠方法模式(Factory Method)

print blog -i pri cnp 三種模式 image void share 工廠方法模式(Factory Method) 工廠模式適合:凡是出現了大量的產品需要創建,並且具有共同的接口時,可以通過工廠方法模式進行創建。在以下的三種模式中,第一種如果傳入的字符串

設計模式-工廠方法模式

集合類 tof col 進行 bool down urn DC 角色 在簡單工廠模式中,我們發現存在很多問題: 由於工廠類集中了所有產品創建邏輯,一旦不能正常工作,整個系統都要受到影響。 要新增產品類的時候,就要修改工廠類的代碼,違反了開放封閉原則(對擴展的開放,對修改的

設計模式】簡單工廠模式 |工廠方法模式 |抽象工廠模式

簡單工廠模式 由三種角色組成: 1、工廠類角色:是簡單工廠模式的核心,含有一定的商業邏輯和判斷邏輯。 2、抽象產品角色:一般是具體產品繼承的父類或者實現的介面。 3、具體產品角色:工廠類所建立的物件就是此角色的例項。 用一個單獨的類來做這個創在例項的過程,這就

android設計模式——工廠方法模式

定義:定義一個用於建立物件的介面,讓子類決定例項化哪個類. 使用場景: 在任何需要生成複雜物件的地方,都可以使用工廠方法模式. 應用舉例:去工廠提貨物,只需說要什麼貨,不必知道貨物是怎麼做出來的 類圖: Factory,抽象的工廠類 ConcreteFactory,具

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

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

java常用設計模式--工廠方法模式簡單例子

package com.ruanyun;/** * @Auther: maxw * @Date: 2018/11/12 11:02 * @Description:工廠方法模式:有四個角色,抽象工廠模式,具體工廠模式,抽象產品模式,具體產品模式。不再是由一個工廠類去例項化具體的產品,而是由抽象工廠的子類去例項化

Java設計模式工廠方法模式&抽象工廠模式

工廠方法模式與抽象工廠模式都是設計模式中重要而且常見的模式。       工廠方法模式:定義一個用於建立物件的介面,讓子類決定例項化哪一個類。工廠方法使一個類的例項化延遲到其子類。 通用類圖如下:        

用心理解設計模式——工廠方法模式 (Factory Method Pattern)

前置文章: 用心理解設計模式——設計模式的原則  設計模式相關程式碼已統一放至 我的 Github   一、定義   建立型模式之一。   Define an interface for creating an object, b

設計模式 --- 工廠方法模式

1.定義 一定一個建立物件的介面,讓子類決定例項化哪個類。   2.使用場景 在任何需要生成複雜物件的地方,都可以使用工廠方法模式。   3.簡單實現 以一個汽車組裝為例,汽車廠主要以組裝一款SUV車型,比如Q3、Q5、Q7,對於這類車型內部差異並不大

23種設計模式----工廠方法模式----建立型模式

工廠方法模式或者說是簡單工廠方法。 ps:學會模板方法再學習工廠方法更簡單,或者說工廠方法模式是在模板方法的基礎上進行設計的。 1.什麼是工廠方法模式 將例項的生成交給子類(出自《圖解設計模式》) 這句話怎麼理解? 我自己的理解就是把建立和實現分離。 使用工廠

設計模式---工廠方法模式

模式描述:        提供一個用於建立物件的介面(工廠介面),讓其實現類(工廠實現類)決定例項化哪一個類(產品類),並且由該實現類建立對應類的例項。 模式作用:        可以一定程度上解耦,消費者和產品實現類隔離開,只依賴產品介面(抽象產品),產品實現

Java 開發 設計模式 ----工廠方法模式(Factory Method)

工廠方法模式(Factory Method) 工廠方法模式分為三種: 11、普通工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。首先看下關係圖: 舉一個傳送郵件和簡訊的例子。首先,建立二者的共同介面: public interface Sender {