1、抽象操作类Operation,及其具体实现类AddOperation、SubOperation
///
/// 抽象操作类
///
public abstract class Operation
{
public int numberA;
public int numberB;
public abstract int GetResult();
}
///
/// 加法操作
///
public class AddOperation : Operation
{
public override int GetResult()
{
return (this.numberA + this.numberB);
}
}
///
/// 减法操作
///
public class SubOperation : Operation
{
public override int GetResult()
{
return (this.numberA - this.numberB);
}
}
2、抽象工厂类Factory及其具体工厂类AddFactory、SubFactory public abstract class Factory { public abstract Operation CreateOperation(); } public class AddFactory : Factory { public override Operation CreateOperation() { return new AddOperation(); } } public class SubFactory:Factory { public override Operation CreateOperation() { return new SubOperation(); } } |
3、客户端代码 static void Main(string[] args) { Console.WriteLine("使用工厂方法进行计算"); Factory factory1 = new AddFactory(); Operation operation1= factory1.CreateOperation(); operation1.numberA = 10; operation1.numberB = 20; Console.WriteLine("{0}+{1}={2}", operation1.numberA, operation1.numberB, operation1.GetResult()); Factory factory2 = new SubFactory(); Operation operation2 = factory2.CreateOperation(); operation2.numberA = 10; operation2.numberB = 20; Console.WriteLine("{0}+{1}={2}", operation2.numberA, operation2.numberB, operation2.GetResult()); Console.Read(); } |
3、实例运行结果
五、总结(Summary)
本文对工厂方法模式(Factory Method Pattern)的概念及其设计结构图简单地进行了描述,同样也以一个计算器的实例进行了说明,工厂方法模式较简单工厂模式,修改时关闭的,扩展时开放的,完全符合开放-封闭原则.