狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

了解C#中的工廠方法設計模式實現(xiàn)與示例

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

引言

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

工廠方法設計模式

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

1、使用好處

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

  • 運行時動態(tài)創(chuàng)建對象;

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

2、構成

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

  • 抽象產(chǎn)品類:創(chuàng)建具體對象的父類,是對象所具有的公共接口。

  • 具體產(chǎn)品類:是具體對象實現(xiàn)的邏輯,繼承抽象產(chǎn)品類

  • 抽象工廠類:實現(xiàn)抽象工廠中的抽象方法,完成具體產(chǎn)品的創(chuàng)建

  • 具體工廠類:實現(xiàn)了抽象產(chǎn)品所定義的接口。

  • 調(diào)用端: 實現(xiàn)調(diào)用工廠類,實現(xiàn)業(yè)務功能。

結構圖示

實現(xiàn)

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

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

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

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

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

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

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

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

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、實現(xiàn)模式調(diào)用:

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();        }    }}

小結

以上是工廠方法設計模式的相關內(nèi)容及在C#中模擬實現(xiàn)的示例。


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