当前位置:首页 > 科技  > 软件

简单工厂模式在C#中的实现

来源: 责编: 时间:2024-07-23 07:18:16 608观看
导读简单工厂模式(Simple Factory Pattern)属于创建型模式,它定义了一个创建对象的类,由这个类来封装实例化对象的行为。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的

简单工厂模式(Simple Factory Pattern)属于创建型模式,它定义了一个创建对象的类,由这个类来封装实例化对象的行为。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。Qui28资讯网——每日最新资讯28at.com

Qui28资讯网——每日最新资讯28at.com

一、简单工厂模式的结构

简单工厂模式主要包含以下角色:Qui28资讯网——每日最新资讯28at.com

  • 工厂类(Creator):这是简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
  • 抽象产品类(Product):简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
  • 具体产品类(Concrete Product):简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

二、简单工厂模式的实现

下面通过C#代码示例来演示简单工厂模式的实现:Qui28资讯网——每日最新资讯28at.com

(1) 定义抽象产品类Qui28资讯网——每日最新资讯28at.com

public interface IProduct{    void Show();}

(2) 定义具体产品类Qui28资讯网——每日最新资讯28at.com

public class ConcreteProductA : IProduct{    public void Show()    {        Console.WriteLine("This is Product A");    }}public class ConcreteProductB : IProduct{    public void Show()    {        Console.WriteLine("This is Product B");    }}

(3) 定义工厂类Qui28资讯网——每日最新资讯28at.com

public class SimpleFactory{    public static IProduct CreateProduct(string type)    {        switch (type)        {            case "A":                return new ConcreteProductA();            case "B":                return new ConcreteProductB();            default:                throw new ArgumentException("Unknown product type");        }    }}

(4) 客户端代码Qui28资讯网——每日最新资讯28at.com

class Program{    static void Main(string[] args)    {        IProduct productA = SimpleFactory.CreateProduct("A");        productA.Show();        IProduct productB = SimpleFactory.CreateProduct("B");        productB.Show();    }}

三、简单工厂模式的优缺点

优点:Qui28资讯网——每日最新资讯28at.com

  • 工厂类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅“消费”产品。简单工厂模式通过这种做法实现了对责任的分割。
  • 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可。
  • 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性。

缺点:Qui28资讯网——每日最新资讯28at.com

  • 由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。
  • 使用简单工厂模式将会增加系统中类的个数,在一定程序上增加了系统的复杂度和理解难度。
  • 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

简单工厂模式作为一种简单且实用的创建型模式,在软件开发中得到了广泛的应用,特别是当系统中只需要一个工厂类或者系统中只需要创建少量对象时,使用简单工厂模式可以大大简化系统的实现,提高系统的可维护性和灵活性。Qui28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-102908-0.html简单工厂模式在C#中的实现

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 深度选择器探秘:/deep/、>>>、::v-deep 与 v-deep() 的区别与用法

下一篇: Git merge 和 Git rebase,如何选择?

标签:
  • 热门焦点
  • 轿车从天而降电动车主被撞身亡 超速抢道所致:现场视频让网友吵翻

    近日,上海青浦区法院判决轿车从天而降电动车主被撞身亡案,轿车车主被判有期徒刑一年。案件显示当时男子驾驶轿车在上海某路段行驶,前车忽然转弯提速超车,
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 分享六款相见恨晚的PPT模版网站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS网站旨在为全球Office用户提供丰富的高品质原创PPT模板、实用文档、数据图表及个性化定制服务。优点:OfficePLUS是微软官方网站,囊括PPT模板、Word模
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 微软邀请 Microsoft 365 商业用户,测试视频编辑器 Clipchamp

    8 月 1 日消息,微软近日宣布即将面向 Microsoft 365 商业用户,开放 Clipchamp 应用,邀请用户通过该应用来编辑视频。微软于 2021 年收购 Clipchamp,随后开始逐步整合到 Microsof
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top