设计模式学习第四天
2016-04-17 00:31
267 查看
今天是周末,需要散心,就简单学习一下。
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的三大特性:封装,继承,多态;最主要的是利用多态开利用工厂生产不同的子类,就是所谓的工厂。
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的三大特性:封装,继承,多态;最主要的是利用多态开利用工厂生产不同的子类,就是所谓的工厂。
相关文章推荐
- 机器学习笔记02:多元线性回归、梯度下降和Normal equation
- Android固件加载出错(load failed with error -2)
- IOS 退出程序代码
- 笔记未整理
- Helloworld
- c++作业3
- 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
- Android学习笔记(36):Android的两种事件处理方式
- c++第3次实验
- Redis与Memcached的区别
- FZU 2191 完美的数字
- 设计模式学习笔记之策略模式
- 华为OJ 名字的漂亮度
- Linux---windows互通之samba部署
- BC #80 B Segment(快速乘法、坑)
- OPNET学习资料
- web初识
- oracle中文乱码,
- web 9 (Servler,ServlerContext,获取类路径下资源)
- Session会话失效,重定向到登录页面,iframe模式框架下,会出现在iframe中