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