本文共 3078 字,大约阅读时间需要 10 分钟。
可维护、可复用、可扩展、灵活性好。
通过封装、继承、多态、把程序的耦合性降低,用设计模式使得程序更加灵活,容易修改并且易于复用。
建立一个计算器类类A–体现封装
建立不同的子类代表不同的操作(±*/),继承父类–体现继承
实现一个单独的类做创建实例的过程,根据不同的输入创建不同的实现类对象–简单工厂,体现多态
PS:以后仅更改加法逻辑,就动加法类就好,添加各种复杂运算就创建不同的操作子类继承计算器父类并且修改工厂类。
package com.clt.simplefactory.entity;public class Operation { private double numberA=0; private double numberB=0; public double getNumberA() { return numberA; } public double getNumberB() { return numberB; } public void setNumberA(double numberA) { this.numberA = numberA; } public void setNumberB(double numberB) { this.numberB = numberB; } public double getResult(){ double result=0; return result; }}
package com.clt.simplefactory.entity;public class OperationAdd extends Operation { @Override public double getResult() { double result=0; result=getNumberA()+getNumberB(); return result; }}
package com.clt.simplefactory.entity;public class OperationSub extends Operation { @Override public double getResult() { double result=0; result=getNumberA()-getNumberB(); return result; }}
package com.clt.simplefactory.entity;public class OperationMul extends Operation { @Override public double getResult() { double result=0; result=getNumberA()*getNumberB(); return result; }}
package com.clt.simplefactory.entity;public class OperationDiv extends Operation { @Override public double getResult() { double result=0; try{ result=getNumberA()/getNumberB(); } catch (ArithmeticException exc){ System.out.println("除数不能为0"); } return result; }}
package com.clt.simplefactory.factory;import com.clt.simplefactory.entity.OperationAdd;import com.clt.simplefactory.entity.OperationDiv;import com.clt.simplefactory.entity.OperationMul;import com.clt.simplefactory.entity.Operation;public class OperationFactory { public static Operation createOperate(String oprate){ Operation oper=null; switch (oprate){ case "+": oper=new OperationAdd(); break; case "-": oper=new OperationDiv(); break; case "*": oper=new OperationMul(); break; case "/": oper=new OperationDiv(); break; } return oper; }}
package com.clt.simplefactory.client;import com.clt.simplefactory.entity.Operation;import com.clt.simplefactory.factory.OperationFactory;public class Client { public static void main(String[] args) { Operation oper; oper= OperationFactory.createOperate("+"); oper.setNumberA(1); oper.setNumberB(200); double result= oper.getResult(); System.out.println(result); }}
基于《大话设计模式》
转载地址:http://ksfdi.baihongyu.com/