欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

了解C#中的工廠方法設計模式實現與示例

admin
2024年7月18日 11:57 本文熱度 1094

引言

工廠設計模式是一種常用于實例化對象模式,通過工廠的方法返回需要的對象實例。工廠設計模式被分為簡單工廠、工廠方法、抽象工廠三種設計模式。在前篇中介紹了簡單工廠設計模式,其中當需要增加一種新類型對象時,我們除了需增加一個新的對象類,還需要修改工廠類的代碼,這就使整個設計在一定程度上違反了開閉原則。本文介紹工廠方法設計模式。

工廠方法設計模式

工廠方法設計模式(Factory Method Pattern)它屬于創建型模式,與簡單工廠設計模式非常相似,工廠方法設計模式,對工廠類進一步抽象,將工廠提取成一個接口或抽象類。根據不同的需求返回相應的對象實例。

1、使用好處

  • 封裝對象邏輯,符合開閉原則;

  • 運行時動態創建對象;

  • 降耦合度,提高可維護性;

2、構成

工廠方法設計模式主要包含以下幾個角色組成:

  • 抽象產品類:創建具體對象的父類,是對象所具有的公共接口。

  • 具體產品類:是具體對象實現的邏輯,繼承抽象產品類

  • 抽象工廠類:實現抽象工廠中的抽象方法,完成具體產品的創建

  • 具體工廠類:實現了抽象產品所定義的接口。

  • 調用端: 實現調用工廠類,實現業務功能。

結構圖示

實現

在C#中,工廠方法設計模式(Factory Method)的實現涉及幾個關鍵步驟,以下是實現示例描述。示例模擬調用平臺快遞面單打印

1、定義快遞面單抽象基類:分析對象,抽取共性的方法、屬性等。

namespace Fountain.WinConsole.DesignPatternFactoryMethod{    /// <summary>    /// 快遞面單    /// </summary>    public abstract class ExpressWaybill    {        /// <summary>        /// 打印        /// </summary>        /// <param name="jsonContent">打印數據</param>        public abstract void Print(string jsonContent);    }}

2、定義快遞面單具體子類:實現自己的方法。

using System;
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    /// <summary>    /// 菜鳥快遞面單    /// </summary>    public class CaiNiao: ExpressWaybill    {        /// <summary>        /// 打印        /// </summary>        /// <param name="jsonContent">打印數據</param>        public override void Print(string jsonContent)        {            Console.WriteLine("往菜鳥打印組件發送請求:" + jsonContent);        }    }}
using System;
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    /// <summary>    /// 抖音快遞面單    /// </summary>    public class Douyin: ExpressWaybill    {        /// <summary>        /// 打印        /// </summary>        /// <param name="jsonContent">打印數據</param>        public override void Print(string jsonContent)        {            Console.WriteLine("往抖音打印組件發送請求:" + jsonContent);        }    }}
using System;
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    /// <summary>    /// 視頻號快遞面單    /// </summary>    public class ShiPinHao: ExpressWaybill    {        /// <summary>        /// 打印        /// </summary>        /// <param name="jsonContent">打印數據</param>        public override void Print(string jsonContent)        {            Console.WriteLine("往視頻號打印組件發送請求:" + jsonContent);        }    }}

3、定義創建快遞面單的抽象工廠:分析對象,抽取共性的方法、屬性等。

namespace Fountain.WinConsole.DesignPatternFactoryMethod{    public abstract class ExpressWaybillCreator    {        protected abstract ExpressWaybill MakeExpressWaybill();        /// <summary>        ///         /// </summary>        /// <returns></returns>        public ExpressWaybill CreateExpressWaybill()        {            return this.MakeExpressWaybill();        }    }}

4、定義創建快遞面單具體工廠:分析對象,抽取共性的方法、屬性等。

namespace Fountain.WinConsole.DesignPatternFactoryMethod{    public class CaiNiaoCreator:ExpressWaybillCreator    {        protected override ExpressWaybill MakeExpressWaybill()        {            ExpressWaybill expressWaybill = new CaiNiao();            return expressWaybill;        }    }}
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    public class DouyinCreator:ExpressWaybillCreator    {        protected override ExpressWaybill MakeExpressWaybill()        {            ExpressWaybill expressWaybill = new Douyin();            return expressWaybill;        }    }}
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    public class ShiPinHaoCreator:ExpressWaybillCreator    {        protected override ExpressWaybill MakeExpressWaybill()        {            ExpressWaybill expressWaybill = new ShiPinHao();            return expressWaybill;        }    }}

5、實現模式調用:

using System;
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    internal class Program    {        static void Main(string[] args)        {            ExpressWaybill expressWaybill;            Console.WriteLine("輸入快遞面單類型!CaiNaio、ShiPinHao 或 Douyin.");            string userInput = Console.ReadLine();            switch (userInput)            {                case "CaiNaio":                expressWaybill = new  CaiNiaoCreator().CreateExpressWaybill();                    break;                case "ShiPinHao":                expressWaybill = new ShiPinHaoCreator().CreateExpressWaybill();                    break;                case "Douyin":                expressWaybill = new DouyinCreator().CreateExpressWaybill();                    break;                default:                expressWaybill = null;                    break;            }            if (expressWaybill != null)            {                expressWaybill.Print(userInput);            }            Console.Read();        }    }}

小結

以上是工廠方法設計模式的相關內容及在C#中模擬實現的示例。


該文章在 2024/7/18 11:59:45 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved