简单工厂模式
来源:互联网 发布:淘宝家装物流 编辑:程序博客网 时间:2024/06/06 03:12
实例:
实现一个简单的计算器
UML类图:
实现代码:
public class Operation { private double _numberA = 0; private double _numberB = 0; /// 数字A public double NumberA { get { return _numberA; } set { _numberA = value; } } /// 数字B 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; } } /// 减法类 class OperationSub : Operation { public override double getResult() { double result = 0; result = NumberA - NumberB; return result; } } /// 乘法类 class OperationMul : Operation { public override double getResult() { double result = 0; result = NumberA * NumberB; return result; } } /// 除法类 class OperationDiv : Operation { public override double getResult() { double result = 0; if (NumberB==0) throw new Exception("除数不能为0。"); result = NumberA / NumberB; return result; } }
/// 运算类工厂 class OperationFactory { public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": { oper = new OperationAdd(); break; } case "-": { oper = new OperationSub(); break; } case "*": { oper = new OperationMul(); break; } case "/": { oper = new OperationDiv(); break; } } return oper; } }}
客户端代码:
Operation oper; oper = OperationFactory.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; double result = oper.getResult();
说明:
简单工厂模式的实质是由一个工厂类(OperationFactory)根据传入的参数,动态决定应该创建哪一个产品类(如OperationAdd等)(这些产品类继承自一个父类(Operation)或接口)的实例。
该模式中包含的角色及其职责
工厂(Creator)角色(本例中为OperationFactory)
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
抽象产品(Product)角色(本例中为Operation)
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色(本例中为OperationAdd等)
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
参考资料
-《大话设计模式》
1 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- 归一化含义
- HDU shǎ崽 OrOrOrOrz
- getopt_long
- JavaScript/jQuery 表单美化插件小结
- JQuery-ui
- 简单工厂模式
- 邻接
- Java网盘
- Java多线程之可见性分析
- 内存池设计
- 表达式求值
- shell脚本中的shift的用法
- 在IDEA中只用键盘快速选中某个单词
- Communication System dp 动态规划 || 贪心