直觉地使用计算机机能理解的面向过程的方式去解决问题,会出现耦合的问题,是一种短期的方案,使得程序不容易维护与拓展。所以应该将面向对象的思想应用到程序设计当中,通过封装、继承、多态将程序的耦合度降低,运用设计模式增强程序的灵活性,使得它易于修改与复用。为了培养更好的编程思维与习惯,先从设计模式的学习与使用开始,希望有计划地学习设计模式,并且逐渐从了解到化为内用嘤嘤嘤!一、简单工厂模式:创建一个专门的类,使它根据情况创建不同类的对象,实现业务逻辑与界面逻辑的分离,降低耦合。
二、以实现简单计算器为例:创建基础运算抽象类继承抽象类,实现抽象类中的具体运算方法创建简单工厂类,由简单工厂类根据情况选定运算方法,即选定需要创建的类对象。
abstract class Operation{ private double numberA=0; private 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; } abstract double getResult() throws Exception; } /** * 继承抽象类,实现一些具体的运算 */ class Add extends Operation{ @Override double getResult() { return getNumberA()+getNumberB(); } } class Less extends Operation{ @Override double getResult() { return getNumberA()-getNumberB(); } } class Mul extends Operation { @Override double getResult() throws Exception{ if (getNumberB()!=0){ return getNumberA()/getNumberB(); }else{ throw new Exception("除数为零,不合法"); } } } public class SimpleFactory { public Operation chooseFunc (String operate){ Operation operation=null; switch (operate){ case "+": operation=new Add(); break; case "-": operation=new Less(); break; case "/": operation=new Mul(); break; default: System.out.println("继续扩展方法吧"); break; } return operation; } } class Test{ public static void main(String[] args) throws Exception { double numberA=23; double numberB=22; String[] operate={"+","-","/"}; SimpleFactory simpleFactory=new SimpleFactory(); Operation operation=simpleFactory.chooseFunc(operate[2]); operation.setNumberA(numberA); operation.setNumberB(numberB); System.out.println(operation.getResult()); } }
来源:https://www.cnblogs.com/chen-ying/p/10979058.html