《大话设计模式》java实现之简单工厂模式
来源:互联网 发布:大数据神经网络 编辑:程序博客网 时间:2024/05/14 14:59
《大话模式》这本书写得不错,可惜不是java版,现在有空,想着用java实现一下,写到哪算哪
UML图
代码结构图
public class Client { public static void main(String[] args) { Operation operation = OperationFactory.createOperation("+"); operation.setNumberA(1); operation.setNumberB(2); double result = operation.getResult(); System.out.println("result " + result); }}
public abstract class Operation { private double numberA = 0; private double numberB = 0; public abstract double getResult(); public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return numberB; } public void setNumberB(double numberB) { this.numberB = numberB; }}
public class OperationAdd extends Operation { @Override public double getResult() { return this.getNumberA() + this.getNumberB(); }}
public class OperationFactory { public static Operation createOperation(String operate) { Operation operation = null; switch (operate) { case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSub(); break; default: break; } return operation; }}
public class OperationSub extends Operation { @Override public double getResult() { return getNumberA() - getNumberB(); }}
书中还有乘法、除法,以及可以扩展的n次幂算法,这里省略,方便查看。
运行结果
个人总结:
1.UML图
在简单工厂中,OperationFactory和OperationAdd、OperationSub是依赖关系,而不是关联关系,原因如下:
1.1聚合关系、合成关系都属于关联关系(has-a),是特殊的关联关系,聚合关系时比较弱的“拥有”关系(如大雁与雁群),合成关系是比较强的“拥有”关系(如大雁与翅膀)
1.2依赖关系(user-a):A类的变化引起B类的变化,则B依赖于A,具体表现为在某个类的方法使用另一个类对象作为参数,如局部变量(关联关系是全局变量)、方法参数或静态方法调用
Driver类的drive(Car car)方法与Car类。
没想懂Client和OperationFactory为什么是关联关系???
阅读全文
0 0
- 《大话设计模式》java实现之简单工厂模式
- 大话设计模式之C++实现---简单工厂模式
- java设计模式大话之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之简单工厂模式
- 大话设计模式之--简单工厂模式
- 大话设计模式之简单工厂模式
- 《大话设计模式》之简单工厂模式
- 《大话设计模式》java实现之工厂方法模式
- 《大话设计模式》java实现之抽象工厂模式
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 简单工厂实现-大话设计模式
- 简单工厂实现-大话设计模式
- 大话设计之简单工厂模式
- 大话设计模式读书笔记之简单工厂
- ACM准备之路(蓝桥杯3)
- 3用于MNIST的卷积神经网络-3.8使用10种不同的优化器训练模型,观察性能曲线
- ◆程序笔记◆◇第五期◇你好,NOIP
- ANT风格
- lua中的匹配模式
- 《大话设计模式》java实现之简单工厂模式
- ACM准备之路(蓝桥杯4)杨辉三角数组解法
- PHP四级联动全国地区
- 打包状态下百度的ak的获得
- 回文算法
- Thrift 客户端 C# ---实现zookeeper监视(1)
- 大数据预科19(补充之线程)
- C#简单的在图片上添加文字并保存
- 再谈找负环