class Program { static void Main(string[] args) { IFactory operFactory = new AddFactory();有别于简单工厂中OperationFactory.CreateOperate("+"); Operation oper = operFactory.CreateOperation();从简单工厂中的一步,拆成了两步来生成所需的对象 oper.NumberA = 1; oper.NumberB = 2; Console.WriteLine(oper.GetResult()); Console.Read(); } } interface IFactory { Operation CreateOperation(); } 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(); } } public abstract class Operation { public double NumberA { get; set; } public double NumberB { get; set; } public abstract double GetResult(); } class OperationAdd:Operation { public override double GetResult() { return NumberA + NumberB; } } class OperationSub:Operation { public override double GetResult() { return NumberA - NumberB; } } class OperationMul:Operation { public override double GetResult() { return NumberA * NumberB; } } class OperationDiv : Operation { public override double GetResult() { return NumberA / NumberB; } }
工厂方法和简单工厂有些相似,最主要不同的地方就是在于:
简单工厂通过一个工厂类(OperationFactory)来创建对象,而工厂方法则是通过特定的方法来创建对象。