《大话设计模式》java实现之简单工厂模式
2017-11-10 18:52
330 查看
《大话模式》这本书写得不错,可惜不是java版,现在有空,想着用java实现一下,写到哪算哪
UML图
代码结构图
书中还有乘法、除法,以及可以扩展的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为什么是关联关系???
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为什么是关联关系???
相关文章推荐
- 大话设计模式-简单工厂模式(学习笔记与java实现)
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 《大话设计模式》之 简单工厂模式 Delphi/C shap /JAVA 实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 大话设计模式3 装饰模式 的java代码实现
- 大话设计模式4 代理模式 的java代码实现
- (转) java 简单工厂模式(实现一个计算器)
- 大话设计模式5 工厂方法模式 的java代码实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 大话设计模式之模板方法模式(Java版实现)考生做试卷问题
- java大话设计模式之一----简单工厂模式
- 大话设计模式之状态模式(java版实现)
- java 简单工厂模式实现
- 简单工厂模式java代码的实现
- 大话设计模式C++实现-第1章-简单工厂模式
- 简单工厂模式的java实现
- 简单工厂模式 Java实现
- java 简单工厂模式(实现一个计算器)
- 大话设计模式之Python实现【简单工厂模式】
- 《大话设计模式》代码JAVA版-第1章 简单工厂模式