今天俺要说一说简单工厂模式(Simple Factory)

前言:简单工厂不能说是设计模式,它是一种变成习惯,因为它不是23种设计模式之一,但是它在实际开发中经常用到,而且也非常简单,可以说是工厂模式的一个引导。

大多程序员都是单身狗,为了弥补一下你们的心情,我决定用你这个对象和你对象进行讲解简单工厂

IWifeAction.cs 接口类

WifeHug.cs 行为类

WifeKiss.cs 行为类

Factory.cs 工厂类

当你去找你老婆索要这些行为的时候,如果她愿意,她就会开始这个行为。

IWifeAction.cs 类Code部分:

 

复制代码
namespace MyFactory
{
    /// <summary>
    /// 抽象行为类:动作
    /// </summary>
    public interface IWifeAction
    {
        string GetAction();
    }
}
复制代码

 

WifeKiss.cs 类 Code部分:

public class WifeKiss : IWifeAction
    {
        public string GetAction()
        {
            return "亲亲";
        }
    }

WifeHug.cs 类 Code部分:

public class WifeHug : IWifeAction
    {
        public string GetAction()
        {
            return "抱抱";
        }
    }

Factory.cs 类 Code部分:

复制代码
/// <summary>
    /// 工厂类
    /// </summary>
    public class Factory
    {
        public IWifeAction GetWifeAction(string actionName)
        {
            if (actionName.Equals("亲亲"))
                return new WifeKiss(); 
            else if (actionName.Equals("抱抱"))
                return new WifeHug();
            throw new Exception("大白天的你想干啥?");
        }
    }
复制代码

如果她不愿意的话,就抛一个异常。

客户端 Code部分:

复制代码
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        IWifeAction action;
        /// <summary>
        /// 老公请求
        /// </summary>
        private void btn_Click(object sender, EventArgs e)
        {
            Factory factory = new Factory();
            //...省略选择。例如switch
            try
            {
                action = factory.GetWifeAction("亲亲");
                MessageBox.Show(action.GetAction());
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
复制代码

 

体系结构

 

 

简单工厂的要点就是你传什么,它就返回什么。不需要找到那么多细节。

优点:工厂类有必要的逻辑判断,可以决定什么时候创建一个动作类,从而客户端不需要去创建什么对象,只需要消费即可。

      客户端无需去记住具体的类名,通过简单工厂的调用可以将减少使用者记忆。

缺点:由于工厂类包含了所有动作的创建逻辑,如果不能工作,系统则直接out;

   不利于系统扩展,例如我想要亲亲还想要看足球,则需要在if 中(switch) 添加分支.

使用工厂模式的最好场景是:对象较少,维护简单工厂类比较方便时可考虑使用它.  

 

posted @   ZaraNet  阅读(286)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示