C# 設計形式系列教程-簡略工場形式。本站提示廣大學習愛好者:(C# 設計形式系列教程-簡略工場形式)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 設計形式系列教程-簡略工場形式正文
1. 概述:
將一個詳細類的實例化交給一個靜態工場辦法來履行,它不屬於GOF的23種設計形式,但實際中卻常常會用到
2. 形式中的腳色
2.1 工場類(Simple Factory): 只包括了創立詳細類的靜態辦法。
2.2 籠統產物(Product):界說簡略工場中要前往的產物。
2.3 詳細產物(ConcreteProduct):詳細產物。
3. 形式解讀
3.1 簡略工場形式的普通化類圖
3.2 簡略工場形式的代碼完成
/// <summary> /// 簡略工場類,用sealed潤飾, /// </summary> public class SimpleProductFactory { /// <summary> /// 應用靜態辦法,依據傳入的參數來指定要實例化哪種產物 /// </summary> /// <param name="productType"></param> /// <returns></returns> public static Product CreateProduct(string productType) { Product product = null; switch (productType) { case "A": product = new ConcreteProductA(); break; case "B": product = new ConcreteProductB(); break; } return product; } } /// <summary> /// 籠統產物 /// </summary> public abstract class Product { public Product() { } public abstract void Opration(); } /// <summary> /// 詳細產物 A /// </summary> public class ConcreteProductA : Product { public ConcreteProductA() { } public override void Opration() { // 產物A } } /// <summary> /// 詳細產物 B /// </summary> public class ConcreteProductB : Product { public ConcreteProductB() { } public override void Opration() { //產物B } }
4. 形式總結
4.1 長處:
4.1.1 職責單一,完成簡略,且完成了客戶端代碼與詳細完成的解耦。
4.1.2 工場類是全部形式的症結.包括了需要的邏輯斷定,依據外界給定的信息,決議畢竟應當創立哪一個詳細類的對象.
4.1.3 經由過程應用工場類,外界可以從直接創立詳細產物對象的為難局勢解脫出來,僅僅須要擔任“花費”對象便可以了。而不用管這些對象畢竟若何創立及若何組織的.
4.1.4 明白了各自的職責和權力,有益於全部軟件系統構造的優化。
4.2 缺陷:
4.2.1 因為工場類集中了一切實例的創立邏輯,違背了高內聚義務分派准繩,將全體創立邏輯集中到了一個工場類中;它所能創立的類只能是事前斟酌到的,假如須要添加新的類,則就須要轉變工場類了。是以它是違反開放關閉准繩的。
4.2.2 當體系中的詳細產物類赓續增多時刻,能夠會湧現請求工場類依據分歧前提創立分歧實例的需求.這類對前提的斷定和對詳細產物類型的斷定交織在一路,很難防止模塊功效的舒展,對體系的保護和擴大異常晦氣;
注:這些缺陷在工場辦法形式中獲得了必定的戰勝。
4.3 應用場景:
4.3.1 工場類擔任創立的對象比擬少;
4.3.2 客戶只曉得傳入工場類的參數,關於若何創立對象(邏輯)不關懷;
4.3.3 因為簡略工場很輕易違背高內聚義務分派准繩,是以普通只在很簡略的情形下運用。
以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。