欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

设计模式之-工厂方法模式

发布时间:2025/5/22 asp.net 61 豆豆
生活随笔 收集整理的这篇文章主要介绍了 设计模式之-工厂方法模式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

工厂方法模式(Factory Method)是一种常用的类创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品

通过工厂方法来解决简单工厂带来的一些弊端

我们都知道,简单工厂最大的弊端就是严重违背了设计模式六大原则中的“单一职责原则”,当然,对于游戏这个门派还是比较稳定的,如果把这个游戏门派换成手机型号的话,那可想而知,动不动就要去修改一下工厂中的方法,而又违背了设计模式六大原则中的“开闭原责”。那么怎么来解决这一类问题呢,工厂方法就可以实现这一点。

核心结构之-抽象工厂

/// <summary>/// 抽象工厂/// </summary>public interface IFactory{ISects CreateInstance();}

核心结构之-具体工厂

/// <summary>/// 创建金系门派工厂/// </summary>public class GoldFactory: IFactory{public ISects CreateInstance(){return new Gold();}} /// <summary>/// 创建木系门派工厂/// </summary>public class WoodFactory: IFactory{public ISects CreateInstance(){return new Wood();}} /// <summary>/// 创建水系门派工厂/// </summary>public class WaterFactory: IFactory{public ISects CreateInstance(){return new Water();}}

核心结构之-抽象产品

/// <summary>/// 门派接口(抽象产品)/// </summary>public interface ISects{/// <summary>/// 技能/// </summary>void Skill();}

核心结构之-具体产品

/// <summary>/// 金系门派/// </summary>public class Gold : ISects{public void Skill(){Console.WriteLine("金系门派技能:金光乍现");}} /// <summary>/// 木系门派/// </summary>public class Wood : ISects{public void Skill(){Console.WriteLine("木系门派技能:摘叶飞花");}} /// <summary>/// 水系门派/// </summary>public class Water : ISects{public void Skill(){Console.WriteLine("水系门派技能:滴水穿石");}}

以上就是核心结构的四个角色,接下来就是调用了。

try{var goldFactory = new GoldFactory();var gold = goldFactory.CreateInstance();gold.Skill();}catch (Exception ex){Console.WriteLine(ex.Message);}Console.ReadKey();

结果如下:

作为演示项目,这里调用不设计DI,但实际用于项目中时,可以借助DI组件来实现依赖注入。

源代码地址:https://github.com/houzhenhuang/DesignPattern

转载于:https://www.cnblogs.com/hhzblogs/p/10363558.html

总结

以上是生活随笔为你收集整理的设计模式之-工厂方法模式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。