【设计模式学习笔记】工厂模式
来源:互联网 发布:edrawmax mac 激活码 编辑:程序博客网 时间:2024/05/21 21:40
实现简单计算器
简单工厂模式
类图:
代码:
//运算类 public class Operation { private double _numberA = 0; private double _numberB = 0; public double NumberA { get { return _numberA; } set { _numberA = value; } } public double NumberB { get { return _numberB; } set { _numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } //加法运算 class OperationAdd:Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } //减法、乘法。。类似 //运算工厂类 public class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; default: break; } return oper; } } //客户端代码 Operation oper; oper = OperationFactory.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult();
工厂方法模式
类图:
代码:
//运算类 public class Operation { private double _numberA = 0; private double _numberB = 0; public double NumberA { get { return _numberA; } set { _numberA = value; } } public double NumberB { get { return _numberB; } set { _numberB = value; } } public virtual double GetResult() { double result = 0; return result; } } //加法运算 class OperationAdd:Operation { public override double GetResult() { double result = 0; result = NumberA + NumberB; return result; } } //工厂接口 interface IFactory { Operation CreateOperation(); } //加法运算工厂 class AddFactory : IFactory { public Operation CreateOperation() { return new OperationAdd(); } } //减法、乘法、除法类似 //客户端代码 IFactory operFactory = new AddFactory(); Operation oper = operFactory.CreateOperation(); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult();
两种模式对比
工厂方法模式的定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类
简单工程模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点
开放-封闭原则 是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改
参考:
《大话设计模式》—–程杰
阅读全文
1 0
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记--工厂模式
- 【设计模式】简单工厂模式学习笔记
- 【设计模式】工厂方法模式学习笔记
- 设计模式学习笔记之工厂模式
- 学习笔记:设计模式之工厂模式
- 设计模式学习笔记--简单工厂模式
- 设计模式学习笔记-工厂方法模式
- 设计模式学习笔记-抽象工厂模式
- java设计模式学习笔记-工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记--简单工厂模式
- 设计模式学习笔记--工厂方法模式
- 设计模式学习笔记--抽象工厂模式
- java设计模式-工厂模式学习笔记
- 设计模式学习笔记-简单工厂模式
- 设计模式学习笔记-工厂方法模式
- 设计模式学习笔记-抽象工厂模式
- 关于小程序:出现脚本错误或者未正确调用 Page()
- 背包
- HDU 2020 绝对值排序(water)
- OpenCV中感兴趣区域的选取与检测(一)
- ScureCRT日志小技巧
- 【设计模式学习笔记】工厂模式
- Mac下PyCharm切换虚拟环境
- bash常用文本处理工具
- ES6-数值的扩展-Number.isInteger() 和 Number.EPSILON
- 关于矩阵分解:特征值分解 svd分解 mf分解 lmf分解 pca 以及个性化推荐 fm ffm als
- opencv----滤波函数:方框滤波、均值滤波、高斯滤波、中值滤波、双边滤波
- NOIP 前刷水记(
- 通过两个位置的经纬度坐标计算距离(C#版本)
- iOS AVPlayer音频播放、缓存、歌词同步 (DFPlayer的使用方法)