2 简单工厂模式

Posted 那就让我这样吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2 简单工厂模式相关的知识,希望对你有一定的参考价值。

  public class CreateFactory
    {
        public static ICreate GeneratorCreate(string createName)
        {
            switch (createName)
            {
                case "People":
                    return new People();
                case "Animal":
                    return new Animal();
                default:
                    throw new NotImplementedException();
            }
        }
    }
    /// <summary>
    /// 人类实现工厂接口
    /// </summary>
    public class People : ICreate
    {

        #region ICreate 成员

        public string Create()
        {
            return "创建人类";
        }

        #endregion
    }
    /// <summary>
    /// 动物实现工厂接口
    /// </summary>
    public class Animal : ICreate
    {

        #region ICreate 成员

        public string Create()
        {
            return "创建动物";
        }

        #endregion
    }
    /// <summary>
    /// 简单工厂接口,返回值类型
    /// </summary>
    public interface ICreate
    {
        string Create();
    }
View Code

简单工厂:根据提供给它的数据,返回一个类的实例,通常它返回的类都有一个公共的父类(或者接口对象)
简单工厂的核心是实例化对象,简单工厂实例化的类具有相同的接口或者基类,在子类比较固定,并不需要扩展时候,可以使用简单工厂,
简单工厂的优点是:可以根据参数获取相应的实例,避免了直接实例化,减低了耦合性,
缺点是可实例化的类型再编译期间已经确定,如果增加新类型,需要修改工厂,不符合OCP(开闭原则),简单工厂需要知道所有要生成的类型,当子类过多,或者子类层级过多则不适合使用简单工厂

调用:

CreateFactory.GeneratorCreate("People").Create()

 

以上是关于2 简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

[设计模式]简单工厂模式

一. 抽象工厂&工厂方法&简单工厂方法

java设计模式之简单工厂模式

设计模式之工厂模式

《疯狂学习之Java设计模式之简单工厂模式》

浅谈简单工厂模式和策略模式