zoukankan      html  css  js  c++  java
  • C# 设计模式-简单工厂模式

    一.介绍  

      简单工厂模式(Simple Factory Pattern)又叫静态工厂方法(Static Factory Method)模式。它属于创建型模式,但它不属于23种设计模式的一种。简单来说,它的作用就是将类的实例化交给一个工厂类去执行。

    二.场景

      比如我们去水果店买水果,我们只要说出要买什么水果,水果店就会给我们什么水果。这里的水果店相当于一个工厂类,我们买水果就相当于new一个水果类,去水果店买水果就是交给水果店去new水果类,这可以降低我们对水果类对象的依赖,要什么类都交给工厂类去创建。

    三.实现

      定义父类接口IFruit(水果)。

    public interface IFruit
    {
        public string Name { get; set; }
    }

      子类继承水果接口。

    public class Apple : IFruit
    {
        public string Name { get; set; } = "苹果";
    }
    
    public class Orange : IFruit
    {
        public string Name { get; set; } = "";
    }

      定义工厂类,和负责实例化对应子类的静态方法。

    public class Factory
    {
        public static IFruit CreateFruit(FruitType type)
        {
            switch (type)
            {
                case FruitType.Apple:
                    return new Apple();
                case FruitType.Orange:
                    return new Orange();
                default:
                    throw new Exception("没有水果");
            }
        }
    }
    
    public enum FruitType
    {
        Apple = 1,
        Orange = 2
    }

      根据不同参数去获取对应的实例。

    public static void Main(string[] args)
    {
        IFruit fruit = Factory.CreateFruit(FruitType.Apple);
        Console.WriteLine(fruit.Name);
    }

     四.总结

      优点是,分离了实例的创建者和调用者,不让调用者直接去创建实例,而是通过工厂类去创建,明确了各自职责,有利于系统优化。

      缺点是,所有创建类的逻辑判断都放在工厂类中,如果需要创建新的类,那就只能去修改工厂类,这就违反了开闭原则,不应当修改底层类,应该通过拓展去加功能。

      所以,简单工厂模式一般是在需要创建的类不多的简单情况下使用。

      

  • 相关阅读:
    Binary Search Tree Iterator
    Oracle迁移:Linux->Windows
    OCP考点实战演练02-日常维护篇
    Oracle数据库全球化
    Oracle管理磁盘空间和资源
    Oracle数据库资源管理
    使用普通用户替代root来管理IEE
    记录一则ORA-12154,ORA-12560解决过程
    Oracle段收缩功能
    Oracle使用SQL传输表空间
  • 原文地址:https://www.cnblogs.com/shadoll/p/14229380.html
Copyright © 2011-2022 走看看