C#设计模式03——简单工厂的写法

什么是C#简单工厂?

C#简单工厂是一种创建对象的设计模式,它定义一个工厂类来创建指定类型的对象,而不是在客户端代码中直接创建对象。简单工厂模式通常使用静态方法来生成对象,并且这些静态方法通常被称为工厂方法。

为什么要使用C#简单工厂?

C#简单工厂模式的主要目的是隐藏创建对象的复杂性,并提供一个可控的对象创建过程。这种方式可以降低客户端代码的耦合性,提高代码的可维护性和可扩展性,并能够在对象的创建过程中尽可能地避免代码重复。

简单工厂模式应用的场景有哪些?

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("生产了一个联想鼠标");
        }
    }

工厂角色

    public  class MouseFachtory
   {
        private Mouse mouse = null;
        public Mouse CreateMouse(string brand)
        {
          
            switch (brand)
            {
                case "dell":
                    mouse=new DellMouse();
                    break;
                case "hp":
                    mouse = new HPMouse();
                    break;
                case "lenovo":
                    mouse = new LenovoMouse();
                    break;
                default:
                    break;
            }
            return mouse;
        }
   }

运行测试

                MouseFachtory mouseFachtory = new MouseFachtory();
                var mouse1 = mouseFachtory.CreateMouse("dell");
                var mouse2 = mouseFachtory.CreateMouse("dell");
                var mouse3 = mouseFachtory.CreateMouse("dell");
                var mouse4 = mouseFachtory.CreateMouse("hp");
                var mouse5 = mouseFachtory.CreateMouse("hp");
                var mouse6 = mouseFachtory.CreateMouse("lenovo");
                mouse1.Print();
                mouse2.Print();
                mouse3.Print();
                mouse4.Print();
                mouse5.Print();
                mouse6.Print();

 

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

posted @ 2021-02-08 20:36  明志德道  阅读(118)  评论(0编辑  收藏  举报