C#设计模式04——工厂方法的写法

1. What是C#工厂方法?
C#工厂方法是一种设计模式,它通过创建具有相同基类的对象来实现代码的重用和灵活性。

2. Why使用C#工厂方法?
使用C#工厂方法有以下好处:
- 降低了代码的耦合性,让代码更易于扩展和修改;
- 隐藏了对象的创建细节,将对象的创建从客户端代码中分离出来;
- 能够让客户端代码更简洁,并且提供了更好的灵活性。

3. Who可以使用C#工厂方法?1
任何使用C#语言的开发人员都可以使用C#工厂方法。

4. Where可以使用C#工厂方法?
C#工厂方法可以应用于任何需要创建对象的场景,包括但不限于:
- 数据库操作;
- 用户界面组件;
- 游戏开发;
- 日志系统。

5. When使用C#工厂方法?
使用C#工厂方法的最佳时机是当你需要创建多个对象具有相同的基类,或者当你需要通过隐藏对象的创建细节来提供更好的灵活性时。

6. How使用C#工厂方法?
使用C#工厂方法分为以下几个步骤:
- 定义一个基类;
- 定义一个抽象工厂类,其中包含一个抽象的方法来创建对象;
- 定义具体的工厂类,实现抽象工厂类中的抽象方法,并根据需要去实例化具体对象;
- 在客户端代码中使用具体的工厂类创建对象,而不是直接实例化具体对象。

 

抽象产品角色

    //鼠标抽象类
    public abstract class Mouse
    {
        public abstract void Print();
    }

具体产品角色

    //戴尔鼠标
    public class DellMouse : Mouse
    {
        public override void Print()
        {
            Console.WriteLine("生产了一个Dell鼠标");
        }
    }
    //惠普鼠标
    public class HPMouse : Mouse
    {
        public override void Print()
        {
            Console.WriteLine("生产了一个惠普鼠标");
        }
    }
    //联想鼠标
    public class LenovoMouse : Mouse
    {
        public override void Print()
        {
            Console.WriteLine("生产了一个联想鼠标");
        }
    }

抽象工厂角色

    /// <summary>
    ///  鼠标工厂抽象类
    /// </summary>
    public abstract  class MouseFactory
    {
        public abstract  Mouse CreateMouse();
    }

具体工厂角色

    //戴尔鼠标工厂
    public class DellMouseFactroy : MouseFactory
    {
        public override Mouse CreateMouse()
        {
            return new DellMouse();//在具体的工厂中实例化产品
        }
    }
    //惠普鼠标工厂
    public class HpMouseFactory : MouseFactory
    {
        public override Mouse CreateMouse()
        {
            return new HPMouse();//在具体的工厂中实例化产品
        }
    }
复制代码
    /// <summary>
    /// 联想鼠标工厂
    /// </summary>
    public class LenovoMouseFactory : MouseFactory
    {
        public override Mouse CreateMouse()
        {
            return new LenovoMouse();//在具体的工厂中实例化产品
        }
    }
复制代码

运行测试

复制代码
                //生产一个戴尔鼠标
                MouseFactory dellMouseFactory = new DellMouseFactroy();
                _04工厂模式.Mouse dellMouse = dellMouseFactory.CreateMouse();
                dellMouse.Print();

                //生产一个惠普鼠标
                MouseFactory hpMouseFactory = new HpMouseFactory();
                _04工厂模式.Mouse hpMouse = hpMouseFactory.CreateMouse();
                hpMouse.Print();

                //生产一个联想鼠标
                LenovoMouseFactory lenovoMouseFactory = new LenovoMouseFactory ();
                _04工厂模式.Mouse lenovoMouse = lenovoMouseFactory.CreateMouse();
                lenovoMouse.Print();
复制代码

 源码下载:https://gitee.com/weilong2020/csharp_23_-design-patterns.git 

posted @   明志德道  阅读(171)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2020-02-08 千年不曾看懂《道德经》,直至有了《道德图》!--作者:南山空同
点击右上角即可分享
微信分享提示