zoukankan      html  css  js  c++  java
  • 简单工厂模式

    简单工作模式
    面向对象核心思想:封装变化。
     
    个人解释:简单工厂模式,也就是建一个类的工厂类,去生产我们需要的类。
     
    例子:我中午吃饭。我经常吃的有两种麦当劳和沙县。如果没有外卖(工厂类)。那我就要必要,想吃什么跑到那个店里买什么(生产类)。现在有工厂(外卖)类负责生产,我就可以直接在公司买了,然后等着吃。
    没有工厂类的时候
        class Program
        {
            static void Main(string[] args)
            {
                
                //想吃沙县,跑到沙县餐厅去买
                Shaxin shaxin=new Shaxin();
                Console.WriteLine(shaxin.Buy());
                //想吃麦当劳,跑到麦当劳餐厅去买
                MacDonald macDonald = new MacDonald();
                Console.WriteLine(macDonald.Buy());
                Console.ReadLine();
            }
        }
        /// <summary>
        /// 沙县餐馆
        /// </summary>
        public class Shaxin
        {
            public string Buy(){return "飘香拌面!";}
        }
        /// <summary>
        /// 麦当劳餐厅
        /// </summary>
        public class MacDonald
        {
            public string Buy() { return "麦辣鸡腿包套餐!"; }
        }

    下面使用工厂类实现

      class Program
        {
            static void Main(string[] args)
            {
               
                //使用工厂类,想要什么类直接用工厂生产
                //想吃沙县,跑到沙县餐厅去买
                Restaurant restaurant = RestaurantSimpleFactory.CreateRestaurant("沙县");
                Console.WriteLine(restaurant.Buy());
                //想吃麦当劳,跑到麦当劳餐厅去买
                restaurant = RestaurantSimpleFactory.CreateRestaurant("麦当劳");
                Console.WriteLine(restaurant.Buy());
                Console.ReadLine();
            }
        }
    
        /// <summary>
        /// 抽象出餐馆类
        /// </summary>
        public abstract class Restaurant
        {
            public abstract string Buy();
        }
        /// <summary>
        /// 沙县餐馆
        /// </summary>
        public class Shaxin:Restaurant
        {
            public override string Buy(){return "飘香拌面!";}
        }
        /// <summary>
        /// 麦当劳餐厅
        /// </summary>
        public class MacDonald:Restaurant
        {
            public override string Buy() { return "麦辣鸡腿包套餐!"; }
        }
    
        /// <summary>
        /// 简单工厂,根据用户选择的餐馆去买饭
        /// </summary>
        public  class RestaurantSimpleFactory
        {
            public  static Restaurant CreateRestaurant(string type)
            {
                Restaurant restaurant = null;
                switch (type)
                {
                    case "沙县" :restaurant= new Shaxin();break;
    
                    case "麦当劳": restaurant=new MacDonald();break;
                }
                return restaurant;
            }
        }

    简单工厂的有点和缺点

    优点:1.实现了客户和生产的分离。客户不在关心生产。客户只关心消费就可以了。

             2.因为客户和生产的分离,客户端消费代码,可以复制满足不同消费者的需求。

    缺点:1.要生成的产品必须是有限的,而且明确的。

            2.简单工厂实现了,生产者和消费者的分离,单这一切都是有代理类完成的。如果增加新的产品,还需要修改代理类。和增加新的产品类。如果代理类,挂了,整个客户端就不能使用了。

    简单工厂模式存在明显的缺点。下面介绍 工厂方法,解决可以简单工厂模式的问题。

     

  • 相关阅读:
    set集合操作
    python中字符串操作
    字典----增删改查遍历
    C#反射回顾笔记
    消息队列之ActiveMQ学习笔记(二、C#实例实现)
    消息队列之ActiveMQ学习笔记(一、下载及安装)
    依赖注入之AutoFac
    layer弹框层学习笔记
    VS自定义代码块Code Snippet
    博客园添加链接
  • 原文地址:https://www.cnblogs.com/Blogs-Wang/p/6401743.html
Copyright © 2011-2022 走看看