5,工厂方法模式

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管理,避免修改很多地方。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容