学习设计模式

5,工厂方法模式

2017-09-23  本文已影响16人  Kenny丶Mo

1,定义

工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实现哪一个类,工厂方法使一个类的实例化延迟到子类

2,UML图

工厂方法

3。基本代码

4,简单实现

namespace FactoryMethod
{
    public abstract class Leifeng
    {
        public abstract void DoSomeThing();
    }

    public class ConcreteLeifengA : Leifeng
    {
        public override void DoSomeThing()
        {
            Debug.Log("ConcreteLeifengA DoSomething!");
        }
    }

    public interface IFactory
    {
        Leifeng CreateLeifeng();
    }

    public class FactoryA : IFactory
    {
        public Leifeng CreateLeifeng()
        {
            return new ConcreteLeifengA();
        }
    }

    #region  添加leifeng对象

    public class ConcreteLeifengB : Leifeng
    {
        public override void DoSomeThing()
        {
            Debug.Log("ConcreteLeifengB DoSomething!");
        }
    }

    public class FactoryB : IFactory
    {
        public Leifeng CreateLeifeng()
        {
            return new ConcreteLeifengB();
        }
    }

    #endregion
}


// 使用
    private void Start()
    {
        Leifeng Leifeng = null;

        //IFactory factory = new FactoryA();

        // 修改
        IFactory factory = new FactoryB();
        Leifeng = factory.CreateLeifeng();
        Leifeng.DoSomeThing();
    }

5,关于工厂方法模式的思考

1,简单工厂模式的优点,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相应的类,对于客户端来说,去除了与具体产品的依赖
2,工厂方法模式,客户端需要决定实例化哪一个工厂,工厂方法把简单工厂的逻辑判断转移到了客户端代码执行。
3,对于工厂方法如果修改的话需要在客户端修改相应的实例化的工厂的类,可以考虑用一个FactoryManager管理,避免修改很多地方。

上一篇 下一篇

猜你喜欢

热点阅读