《大话设计模式》学习笔记5:工厂方法模式
计算器示例:
1.运算类:
public class Operation { public double NumberA { get; set; } public double NumberB { get; set; } public virtual double GetResult() { return 0; } }
2.加减乘除类(以加法类为例):
public class AddOperation : Operation { public override double GetResult() { return NumberA + NumberB; } }
3.工厂类接口:
public interface IFactory { Operation CreateOperation(); }
4.加减乘除工厂(以加法工厂为例):
public class AddFactory:IFactory { public Operation CreateOperation() { return new AddOperation(); } }
5.客户端代码:
class Program { static void Main(string[] args) { IFactory operFactory = new AddFactory(); Operation oper = operFactory.CreateOperation(); oper.NumberA = 1; oper.NumberB = 2; Console.WriteLine(oper.GetResult()); } }
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。缺点是违背了开放-封闭原则。
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行。
posted on 2015-05-08 16:02 Walden1024 阅读(175) 评论(0) 编辑 收藏 举报