公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

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

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

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

引言

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

工廠方法設(shè)計(jì)模式

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

1、使用好處

  • 封裝對(duì)象邏輯,符合開閉原則;

  • 運(yùn)行時(shí)動(dòng)態(tài)創(chuàng)建對(duì)象;

  • 降耦合度,提高可維護(hù)性;

2、構(gòu)成

工廠方法設(shè)計(jì)模式主要包含以下幾個(gè)角色組成:

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

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

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

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

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

結(jié)構(gòu)圖示

實(shí)現(xiàn)

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

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

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、定義快遞面單具體子類:實(shí)現(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ā)送請(qǐng)求:" + 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ā)送請(qǐng)求:" + jsonContent);        }    }}
using System;
namespace Fountain.WinConsole.DesignPatternFactoryMethod{    /// <summary>    /// 視頻號(hào)快遞面單    /// </summary>    public class ShiPinHao: ExpressWaybill    {        /// <summary>        /// 打印        /// </summary>        /// <param name="jsonContent">打印數(shù)據(jù)</param>        public override void Print(string jsonContent)        {            Console.WriteLine("往視頻號(hào)打印組件發(fā)送請(qǐng)求:" + jsonContent);        }    }}

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

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)建快遞面單具體工廠:分析對(duì)象,抽取共性的方法、屬性等。

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、實(shí)現(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();        }    }}

小結(jié)

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


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

主站蜘蛛池模板: 精品亚洲一区二区三 | 极品尤物一区二区三区小说 | 国产亚洲欧美日韩亚洲中文 | 东京热无码人妻 | 国产一区二区精品久久岳√ | 国产福利午夜久久十八禁 | 二区精品区 | 精品高朝久久久久9999 | 国产成人调教 | 国产成年女人特黄持色毛片免 | 国产精品欧美日韩在线一区 | 国产种子在线看网站在线观看 | 国产女主播白浆在线观看 | 国产不卡福利片在线观看浪潮 | 国产精品一区二区网曝门 | 91精品福 | 成人三级在线播放 | 囯产精品视频一区二区三区99 | 国产精品无码日韩欧 | 成人欧美一区在线视频在线观看 | 精品国产一区二区三区四区特色 | 成人午夜高潮免费视频在线观看 | 91福利视频网 | 国产脚交视频在线观看 | 成人午夜精品视频在线观看 | 国产成人久久精品 | 99久久精品无码一区二区毛片 | av一区二区三区传媒 | 日韩在线中文字幕 | 国产午夜在线免费视频 | 国产精品无码专区av在线播 | 国产成人无码a区播放视频 国产成人无码a区视频在线观看 | av网址观看大全 | 韩国三级大胸女高清视频 | 国产高清精品久久久久久久 | 福利无码精品一区二区在线观看 | 国产精品一区久久 | 91免费在线观看 | 国模超大尺度150b | 国产成人综合久久精品下载 | 国产精品国 |