**工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。工厂模式克服了简单工厂模式违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点**
首先是工厂抽象接口,用于具体的工厂类继承
using System;
using AssemblyCSharp;
namespace FactoryPackage
{
public interface IFactory
{
Operation CreateOperation();
}
}
然后是具体的工厂类
using System;
using AssemblyCSharp;
namespace FactoryPackage
{
class AddFactory :IFactory //加法工厂
{
public Operation CreateOperation()
{
return new OperationAdd ();
}
}
class SubFactory :IFactory //减法工厂
{
public Operation CreateOperation()
{
return new OperationSub ();
}
}
class MulFactory : IFactory //乘法工厂
{
public Operation CreateOperation()
{
return new OperationMul ();
}
}
class DivFactory: IFactory //除法工厂
{
public Operation CreateOperation()
{
return new OperationDiv ();
}
}
}
最后是客户端代码
using System;
using UnityEngine;
using AssemblyCSharp;
namespace FactoryPackage
{
public class Client : MonoBehaviour
{
void Start()
{
IFactory operFactory = new AddFactory ();
Operation oper = operFactory.CreateOperation ();
oper.NumberA = 2;
oper.NumberB = 5;
Debug.Log ("Result:"+oper.GetResult ());
}
}
}