今天是周末,需要散心,就简单学习一下。
public class OperationFactory {
public static Operation createOperation(String operation) {
Operation oper = null;
switch(operation) {
case "+":
oper = new AddOperation();
break;
case "/":
oper = new DivOperation();
break;
}
return oper;
}
}
工厂模式的调用其实就是多态的应用。父类指向子类,这就是多态的使用。
所谓的工厂模式,就是利用选择分支语句充当工厂的生产过程,利用不同的参数来生产不同的产品,利用父类指向子类来产生不同的子类。工厂类就好比一个工厂,利用子类的不同特征用选择语句来产生不同的子类,就好比一个工厂生产不同的产品。因为这是最简单的一种封装,其实工厂模式也可以看做是对生产不同子类的一个简单封装。
客户端调用:
import java.util.Scanner;
public class Custom {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Operation oper = null;
System.out.println("请输入要运算的第一个数字:");
oper.setNumberA(sc.nextDouble());
System.out.println("请选择您需要的操作:+、/");
String operation = sc.next();
System.out.println("请输入要运算的第二个数字:");
oper.setNumberB(sc.nextDouble());
Double result = 0.0;
oper = OperationFactory.createOperation(operation);
result = oper.getResult();
System.out.println("运算的结果为:" + result);
}
}
调用过程中发现:父类属性的设置错误,因为要想不实例化父类而调用父类方法,需要将这个方法使用静态方法,静态方法调用属性只能调用静态属性,故:更改父类。如下:
public class Operation {
private static Double _numberA = 0.0;
private static Double _numberB = 0.0;
public static Double getNumberA(){
return _numberA;
}
public static void setNumberA(Double numberA) {
_numberA = numberA;
}
public static Double getNumberB() {
return _numberB;
}
public static void setNumberB(Double numberB) {
_numberB = numberB;
}
public Double getResult(){
Double result = 0.0;
return result;
}
}
由于父类更改了,而我使用的是记事本来编译。所以相关的类全部要重新编译,也可以叫联调。即:javac Operation.java; javaac AddOperation.java; javac DivOperation.java;
javac OperationFactory.java; javac Custom;
至此,一个设计模式学习完毕。通过学习,了解到:所谓的简单工厂设计模式就是利用了面向对象00的三大特性:封装,继承,多态;最主要的是利用多态开利用工厂生产不同的子类,就是所谓的工厂。