iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#如何实现工厂方法模式
  • 353
分享到

C#如何实现工厂方法模式

2023-07-02 17:07:53 353人浏览 八月长安
摘要

本篇内容介绍了“C#如何实现工厂方法模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,

本篇内容介绍了“C#如何实现工厂方法模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,这时候,需求变化了,我三种剑变成了,匕首、剑以及木棒,想要用工厂方法来实现,怎么弄?

上文讲过简单工厂模式,它的最大优点在于工厂类内有创建类型的判断逻辑,客户端只需要通过动态的选择想要创建的类型,就可以交给工厂类来创建,去除了客户与具体产品之间的依赖。

缺点在于,当新建一个类型的时候,需要修正工厂类中的判断逻辑,添加一个case,此时就违背了开放-封闭原则。

工厂方法模式的引入:定义一个用于创建对象的接口,让子类觉得实例化哪一个类,工厂方法模式使得一个类的实例化延迟到了它的子类。

客户端再使用工厂方法模式的时候,需要决定实例化哪一种工厂,选择判断的问题依然存在,也就是说工厂方法模式是对简单工厂的改进,把判断逻辑移动到了客户端。当加入新功能时候,原来是要修正工厂类,现在修改客户端就行了。

领悟:例如在进行编写一个计算器的时候。

  • ①如果把所有的判断逻辑和类的创建放在一个类中,那么出现的问题是,新增加一个功能,其他的功能也会收到影响。所以引进了简单工厂模式,使得耦合性降低了。

  • ②简单工厂在添加新功能的时候,需要改工厂类,同样违背开放-封闭原则,对更改是关闭的,对扩展是开放的。

  • ③针对简单工厂又出现了工厂方法,这时候将工厂类进一步抽象为多个工厂类。这时候我添加一个新功能,就需要添加一个新的工厂类和一个具体的功能类。工作量也变大了。

C#如何实现工厂方法模式

Product:抽象产品

ConcreteProduct:具体产品

Factory:抽象工厂

ConcreteFactory:具体工厂

代码实现:

C#如何实现工厂方法模式

Weapon.cs

namespace FactoryMethod{    public class Weapon    {        //设计一个怪兽,血量是100(其实并不是很合适,怪兽应该单独设计        //作为beat方法的参数传入        protected int monsterLife = 100;        public virtual void beat()        {        }    }}

Knife.cs

namespace FactoryMethod{    public class Knife : Weapon    {        public override void beat()        {            while (monsterLife > 0)            {                base.monsterLife -= 20;                Console.WriteLine("The Monster is still alive!");            }            Console.WriteLine("excellent!The Monster is dead!");         }    }}

SWord.cs

namespace FactoryMethod{   public class Sword:Weapon    {       public override void beat()       {           while (monsterLife > 0)           {               base.monsterLife -= 50;               Console.WriteLine("The Monster is still alive!");           }           Console.WriteLine("Excellent!The Monster is dead!");       }    }}

Stick.cs

namespace FactoryMethod{    public class Stick:Weapon    {        public override void beat()        {            while (monsterLife > 0)            {                base.monsterLife -= 100;                Console.WriteLine("The Monster is still alive!");            }            Console.WriteLine("Excellent!The Monster is dead!");        }    }}

IWeaponFactory.cs

namespace FactoryMethod{    public interface IWeaponFactory    {        Weapon CreateWeapon();    }}

KnifeFactory.cs

namespace FactoryMethod{   public class KnifeFactory:IWeaponFactory    {       public Weapon CreateWeapon()       {           return new Knife();       }    }}

SwordFactory.cs

namespace FactoryMethod{    public class SwordFactory : IWeaponFactory    {        public Weapon CreateWeapon()        {            return new Sword();        }    }}

StickFactory.cs

namespace FactoryMethod{    public class StickFactory:IWeaponFactory    {        public Weapon CreateWeapon()        {            return new Stick();        }    }}

Program.cs

namespace FactoryMethod{    class Program    {        static void Main(string[] args)        {            IWeaponFactory factory = new SwordFactory();            Weapon weapon = factory.CreateWeapon();            weapon.beat();            factory = new KnifeFactory();            weapon = factory.CreateWeapon();            weapon.beat();            factory = new StickFactory();            weapon = factory.CreateWeapon();            weapon.beat();            Console.ReadKey();        }    }}

运行结果:

C#如何实现工厂方法模式

“C#如何实现工厂方法模式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C#如何实现工厂方法模式

本文链接: https://www.lsjlt.com/news/343227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#如何实现工厂方法模式
    本篇内容介绍了“C#如何实现工厂方法模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,...
    99+
    2023-07-02
  • C#实现工厂方法模式
    场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,这时候,需求变化了,我三种剑变成了,匕首、剑以及木棒,想要用工厂方法来实现,怎么弄? 1.上文讲过简单工厂模式,它的最大优点在于...
    99+
    2024-04-02
  • php工厂方法模式如何实现
    本篇内容介绍了“php工厂方法模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP工厂方法模式的好处是:核心类只需要关注工厂类的...
    99+
    2023-06-29
  • C#如何实现简单工厂模式
    这篇文章主要介绍“C#如何实现简单工厂模式”,在日常操作中,相信很多人在C#如何实现简单工厂模式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现简单工厂模式”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-02
  • C#实现简单工厂模式
    情景:有一个怪兽,HP是100,现在勇士有可以使用武器将其打败,有三种武器,木剑每次打击20血,铁剑每次50血,金刚剑每次100血,如果想要使用简单工厂方式,怎么设计? 一.啥是简单...
    99+
    2024-04-02
  • Java简单工厂,工厂方法,抽象工厂模式怎么实现
    这篇文章主要讲解了“Java简单工厂,工厂方法,抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java简单工厂,工厂方法,抽象工厂模式怎么实现”吧!1、简单工厂模式1.定...
    99+
    2023-06-29
  • PHP如何实现工厂模式
    在PHP中实现工厂模式,可以按照以下步骤进行:1. 定义一个接口或者抽象类,作为产品的基类,包含产品的共同属性和方法。2. 创建具体...
    99+
    2023-08-24
    PHP
  • java设计模式学习之工厂方法模式如何实现
    这篇文章主要为大家展示了“java设计模式学习之工厂方法模式如何实现”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java设计模式学习之工厂方法模式如何实现”这篇文章吧。工厂方法模式(Facto...
    99+
    2023-05-31
    java
  • Java工厂方法模式怎么实现
    这篇文章主要讲解了“Java工厂方法模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java工厂方法模式怎么实现”吧!一、什么是工厂方法模式?工厂方法模式:也叫虚拟构造器模式或者多...
    99+
    2023-06-29
  • Java工厂模式之简单工厂,工厂方法,抽象工厂模式详解
    目录1、简单工厂模式1.定义2.代码案例3.适用场景4.优缺点2、工厂方法模式1.定义2.代码案例3.适用场景4.优缺点3、抽象工厂模式1.定义2.代码案例3.适用场景4.优缺点4、...
    99+
    2024-04-02
  • 三种工厂模式的C++实现
    引出工厂模式的设计问题◆ 1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现...
    99+
    2024-04-02
  • C++设计模式之工厂方法模式的实现及优缺点
    工厂方法模式是在简单工厂模式的缺点上进行优化的,我们都知道,在简单工厂模式中,要去增加或者减少一个产品的类型,都需要修改工厂中的if-else判断。这样子显然不符合我们代码开发中的开...
    99+
    2024-04-02
  • golang实现简单工厂、方法工厂、抽象工厂三种设计模式
    1、简单工厂: 第一步:创建一个文章接口,需要实现阅读和写作的功能。 type Article interface { ReadArticle() string WriteArt...
    99+
    2024-04-02
  • Springboot中实现策略模式+工厂模式的方法
      策略模式和工厂模式相信大家都比较熟悉,但是大家有没有在springboot中实现策略和工厂模式   具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序...
    99+
    2024-04-02
  • python工厂方法模式原理与实现
    目录一、简介二、工厂方法模式的主要角色三、简单工厂模式四、工厂模式五、抽象工厂模式总结一、简介 工厂模式是属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对...
    99+
    2024-04-02
  • 关于工厂方法模式的Java实现
    目录工厂方法模式简述创建步骤步骤1步骤2步骤3步骤4步骤5工厂方法模式简述 与简单工厂模式基本相同,只是工厂是一个抽象的,需要有具体的工厂去实现它,然后利用这个工厂生产产品,之所以出...
    99+
    2024-04-02
  • golang实现工厂模式
    Go语言是一门非常流行的静态编译型语言,其独特的语法和特性使其在很多场景下都具有很好的应用能力。其中,工厂模式是Go语言中非常常见的设计模式之一。本文将介绍如何用Go语言实现工厂模式。工厂模式简介工厂模式是一种常见的创建型模式,它通过定义一...
    99+
    2023-05-15
  • C++中的工厂模式怎么实现
    这篇文章主要讲解了“C++中的工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的工厂模式怎么实现”吧!工厂模式中使用了多态的原理,来将具体实现和接口进行有效的解耦合,符...
    99+
    2023-06-04
  • Python如何实现抽象工厂模式
    这篇文章主要介绍“Python如何实现抽象工厂模式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现抽象工厂模式”文章能帮助大家解决问题。实 现下面是实现Abstract Facto...
    99+
    2023-06-19
  • PHP工厂模式Factory Pattern如何实现
    本文小编为大家详细介绍“PHP工厂模式Factory Pattern如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP工厂模式Factory Pattern如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作