直觉地使用计算机机能理解的面向过程的方式去解决问题,会出现耦合的问题,是一种短期的方案,使得程序不容易维护与拓展。所以应该将面向对象的思想应用到程序设计当中,通过封装、继承、多态将程序的耦合度降低,运用设计模式增强程序的灵活性,使得它易于修改与复用。为了培养更好的编程思维与习惯,先从设计模式的学习与使用开始,希望有计划地学习设计模式,并且逐渐从了解到化为内用嘤嘤嘤!一、简单工厂模式:创建一个专门的类,使它根据情况创建不同类的对象,实现业务逻辑与界面逻辑的分离,降低耦合。
二、以实现简单计算器为例:创建基础运算抽象类继承抽象类,实现抽象类中的具体运算方法创建简单工厂类,由简单工厂类根据情况选定运算方法,即选定需要创建的类对象。
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