02-C#设计模式-简单工厂模式

228 次浏览次阅读

1. 简单工厂模式的介绍

简单工厂模式我们也可以理解为专门负责生产类的实例的类。

2. 简单工厂模式的用途

普通情况下创建类的实例需要使用new关键字,这样两个类之间就存在了依赖关系,如果对实例的类进行改造就需要同时修改依赖类,简单工厂模式将依赖关系从使用类中转移到工厂实现类中,当实现类变动时只需要修改工厂类的实现就可以,不会影响到依赖类

3. 简单工厂模式的思路

通过将类的实例创建过程封装到工厂类中

4.C# 实现代码

    /// <summary>
    /// 菜抽象类
    /// </summary>
    public abstract class Food
    {
        // 输出点了什么菜
        public abstract void Print();
    }
    /// <summary>
    /// 西红柿炒鸡蛋这道菜
    /// </summary>
    public class TomatoScrambledEggs : Food
    {
        public override void Print()
        {
            Console.WriteLine("一份西红柿炒蛋!");
        }
    }

    /// <summary>
    /// 土豆肉丝这道菜
    /// </summary>
    public class ShreddedPorkWithPotatoes : Food
    {
        public override void Print()
        {
            Console.WriteLine("一份土豆肉丝");
        }
    }

    public class Customer
    {
        static void CreateFood()
        {
            // 客户想点一个西红柿炒蛋        
            Food food1 = SimpleFactory.CreateFood("西红柿炒蛋");
            food1.Print();

            // 客户想点一个土豆肉丝
            Food food2 = SimpleFactory.CreateFood("土豆肉丝");
            food2.Print();

            Console.Read();
        }
    }
    public class SimpleFactory
    {
        /// <summary>
        /// 根据菜名创建具体的实例
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public static Food CreateFood(string type)
        {
            Food food = null;

            if (type.Equals("土豆肉丝"))
            {
                food = new ShreddedPorkWithPotatoes();
            }
            else if (type.Equals("西红柿炒蛋"))
            {
                food = new TomatoScrambledEggs();
            }

            return food;
        }
    }
正文完
 1
马化云
版权声明:本站原创文章,由 马化云 2023-10-14发表,共计1058字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。