设计模式(二)简单工厂模式

版权声明: https://blog.csdn.net/if_i_were_a/article/details/83003087

简单工厂模式:

用一个单独的类来做创造实例的过程。例如加减乘除运算,可以将这些类抽象成一个基类,然后继承,实现自己的功能,如果有其他的类要创建,只需要新建一个类,在创造实例的类中加一种情况。

类图:

选自《大话设计模式》

public abstract class Operation {

private double numberA;

private double numberB;

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 getResult();



}



public class OperationAdd extends Operation {

@Override

public double getResult() {

return this.getNumberA()+this.getNumberB();

}

}



public class OperationFactory {

public static Operation createOperation(String operate) {

Operation oper = null;

switch (operate) {

case "+":

oper = new OperationAdd();

break;

case "-":

oper = new OperationSub();

break;

case "*":

oper = new OperationMul();

break;

case "/":

oper = new OperationDiv();

break;

default:

break;

}

return oper;

}

}



public class Client {

public static void main(String[] args) {

Operation oper= OperationFactory.createOperation("/");

oper.setNumberA(5);

oper.setNumberB(6);

System.out.println(oper.getResult());



}

}

总结:简单工厂模式的最大优点在与工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是简单工厂模式违背了开放—封闭原则。增加一个类的时候,需要去改变创造实例的类

猜你喜欢

转载自blog.csdn.net/if_i_were_a/article/details/83003087