
前些天,拜读完大作大话设计模式,里面的示例代码是用C#写的,为了让自己加深一下影响,决定用Java写一下,顺便学着画画UML图^~^
UML:

Operation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public abstract class Operation { private double numberA = 0; private double numberB = 0; private double result = 0; public double getResult() { return result; } public void setResult(double result) { this.result = result; } 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 abstract double calculate(); }
|
OperationFactory
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public class OperationFactory { public static Operation createOperate(String operate){ Operation operation = null; switch (operate){ case "+": operation = new OperationAdd(); break; case "-": operation = new OperationSub(); break; case "*": operation = new OperationMul(); break; case "/": operation = new OperationDiv(); } return operation; } }
|
OperationAdd
1 2 3 4 5 6 7
|
public class OperationAdd extends Operation { @Override public double calculate() { setResult(getNumberA() + getNumberB()); return getResult(); } }
|
OperationDiv
1 2 3 4 5 6 7
|
public class OperationDiv extends Operation{ @Override public double calculate() { setResult(getNumberA() / getNumberB()); return getResult(); } }
|
OperationSub
1 2 3 4 5 6 7 8
|
public class OperationSub extends Operation{ @Override public double calculate() { setResult(getNumberA() - getNumberB()); return getResult(); } }
|
OperationMul
1 2 3 4 5 6 7
|
public class OperationMul extends Operation{ @Override public double calculate() { setResult(getNumberA() * getNumberB()); return getResult(); } }
|
Client
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public class Client { public static void main(String [] args){ Operation opera; opera = OperationFactory.createOperate("+"); opera.setNumberA(1); opera.setNumberB(2); opera.calculate(); System.out.println(opera.getResult()); opera =OperationFactory.createOperate("-"); opera.setNumberA(1); opera.setNumberB(2); opera.calculate(); System.out.println(opera.getResult()); } }
|
编程是一门技术,更是一门艺术
近期评论