首頁 >後端開發 >C#.Net教程 >有關C#工廠模式簡單講解

有關C#工廠模式簡單講解

巴扎黑
巴扎黑原創
2017-09-06 14:56:371299瀏覽

一、簡單工廠(Simple Factory)模式
Simple Factory模式根據提供給它的數據,傳回幾個可能類別中的一個類別的實例。通常它傳回的類別都有一個公共的父類別和公共的方法。

Simple Factory模式其實不是GoF 23個設計模式中的一員。
二、 Simple Factory模式角色與結構:
工廠類別角色Creator (LightSimpleFactory):工廠類別在客戶端的直接控制下(Create方法)建立產品物件。
抽象產品角色Product (Light):定義簡單工廠建立的物件的父類別或它們共同擁有的介面。可以是一個類別、抽象類別或介面。
具體產品角色ConcreteProduct (BulbLight, TubeLight):定義工廠具體加工出的物件。
三、程式範例:

using System; 
public abstract class Light
{
   public abstract void TurnOn();
   public abstract void TurnOff();
}
 
public class BulbLight : Light
{
   public override void TurnOn()
    {
      Console.WriteLine("Bulb Light is Turned on");
   }
 
   public override void TurnOff()
    {
      Console.WriteLine("Bulb Light is Turned off");
   }
}
 
public class TubeLight : Light
{
   public override void TurnOn()
    {
      Console.WriteLine("Tube Light is Turned on");
   }
 
   public override void TurnOff()
    {
      Console.WriteLine("Tube Light is Turned off");
   }
}
 
public class LightSimpleFactory
{
   public Light Create(string LightType)
    {
      if(LightType == "Bulb")
         return new BulbLight();
      else if(LightType == "Tube")
         return new TubeLight();
      else
         return null;
   }
}
 
public class Client
{
   public static void Main()
    {
      LightSimpleFactory lsf = new LightSimpleFactory();
 
      Light l = lsf.Create("Bulb");
      l.TurnOn();
      l.TurnOff();
 
      Console.WriteLine("-----------------");
 
      l = lsf.Create("Tube");
      l.TurnOn();
      l.TurnOff();
   }
}

五、 優點與缺點:
優點:
工廠類別含有必要的判斷邏輯,可以決定何時創建哪一個產品類別的實例,客戶端可以免除直接創建產品物件的責任,而僅僅"消費"產品。簡單工廠模式透過這種做法實現了責任的分割。
缺點:
當產品有複雜的多層等級結構時,工廠類別只有自己,以不變應萬變,就是模式的缺點。因為工廠類別集中了所有產品創建邏輯,一旦無法正常運作,整個系統都要受到影響。
同時,系統擴展困難,一旦增加新產品就必須修改工廠邏輯,有可能造成工廠邏輯過於複雜。
另外,簡單工廠模式通常使用靜態工廠方法,這使得無法由子類別繼承,造成工廠角色無法形成基於繼承的等級結構。

以上是有關C#工廠模式簡單講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn