原文:http://hlzhou.iteye.com/blog/551492
源码:Operation类
- package Operation;
- public abstract class Operation {
- double numberA=0;
- double numberB=0;
- 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 operate();
- }
加类:
- package Operation;
- public class Add extends Operation {
- @Override
- public double operate() {
- return numberA+numberB;
- }
- }
减类:
- package Operation;
- public class Sub extends Operation {
- @Override
- public double operate() {
- return numberA-numberB;
- }
- }
乘类:
- package Operation;
- public class Mul extends Operation {
- @Override
- public double operate() {
- return numberA*numberB;
- }
- }
除类:
- package Operation;
- import java.io.IOError;
- public class Div extends Operation {
- @Override
- public double operate() {
- try {
- return numberA/numberB;
- } catch (IOError e) {
- System.out.println("除数不能为空!");
- return 0;
- }
- }
- }
工厂类:
- import Operation.Add;
- import Operation.Div;
- import Operation.Mul;
- import Operation.Operation;
- import Operation.Sub;
- public class OperationFactory {
- public static Operation createOperation(char operate){
- Operation operation=null;
- switch (operate) {
- case '+':
- operation=new Add();
- break;
- case '-':
- operation=new Sub();
- break;
- case '*':
- operation=new Mul();
- break;
- case '/':
- operation=new Div();
- break;
- }
- return operation;
- }
- }
客户端:
- import Operation.Operation;
- public class Client {
- public static void main(String[] args) {
- Operation operation = OperationFactory.createOperation('*');
- operation.setNumberA(12);
- operation.setNumberB(6);
- System.out.println(operation.operate());
- }
- }