简单工厂设计模式
2017-03-24 17:30
274 查看
设计的流程:
1.创建一个算法父类,定义基本的属性和方法
2.通过继承算法父类,创建各自的算法子类,分别实现其方法
3.创建工厂类,通过在该工厂类型中,判断需要生产什么算法,new对应的算法类
4.通过java的多态,使用工厂类来进行计算算法。
代码如下:
算法父类:
package com.diesignpatterns.simplefactory;
/*
* 计算的父类
*/
public 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;
}
public double getGesult(){
double result = 0;
return result;
}
}
算法子类:
package com.diesignpatterns.simplefactory;
/*
*加法
*/
public class OperationAdd extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()+super.getNumberB();
return result;
}
}
package com.diesignpatterns.simplefactory;
/*
* 减法
*/
public class OperationSub extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()-super.getNumberB();
return result;
}
}
工厂类:
package com.diesignpatterns.simplefactory;
//算法工厂用来获取算法对象
public class OperationFactory {
//定义一个静态方法用来获取算法
public static Operation createOperation(String opertionName){
Operation operation = null;
/*
* switch在java 7以前支持int类型,由于java的向上转型,所以站位小于int的类型都可以使用,
* 在java 7 后可以使用String类型
* 所以,可以使用的类型分为:byte、short、char、int、String
*/
switch (opertionName) {
case "+":
operation=new OperationAdd();
break;
case "-":
operation=new OperationSub();
break;
/*
* 使用switch 是必现使用default;哪怕里面没有内容
*/
default:
break;
}
return operation;
}
}
测试类:
package com.diesignpatterns.simplefactory;
public class OperationResult {
public static void main(String[] args) {
Operation operation=OperationFactory.createOperation("-");
operation.setNumberA(1);
operation.setNumberB(2);
double result = operation.getGesult();
System.out.println(result);
}
}
1.创建一个算法父类,定义基本的属性和方法
2.通过继承算法父类,创建各自的算法子类,分别实现其方法
3.创建工厂类,通过在该工厂类型中,判断需要生产什么算法,new对应的算法类
4.通过java的多态,使用工厂类来进行计算算法。
代码如下:
算法父类:
package com.diesignpatterns.simplefactory;
/*
* 计算的父类
*/
public 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;
}
public double getGesult(){
double result = 0;
return result;
}
}
算法子类:
package com.diesignpatterns.simplefactory;
/*
*加法
*/
public class OperationAdd extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()+super.getNumberB();
return result;
}
}
package com.diesignpatterns.simplefactory;
/*
* 减法
*/
public class OperationSub extends Operation {
public double getGesult(){
double result = 0;
result=super.getNumberA()-super.getNumberB();
return result;
}
}
工厂类:
package com.diesignpatterns.simplefactory;
//算法工厂用来获取算法对象
public class OperationFactory {
//定义一个静态方法用来获取算法
public static Operation createOperation(String opertionName){
Operation operation = null;
/*
* switch在java 7以前支持int类型,由于java的向上转型,所以站位小于int的类型都可以使用,
* 在java 7 后可以使用String类型
* 所以,可以使用的类型分为:byte、short、char、int、String
*/
switch (opertionName) {
case "+":
operation=new OperationAdd();
break;
case "-":
operation=new OperationSub();
break;
/*
* 使用switch 是必现使用default;哪怕里面没有内容
*/
default:
break;
}
return operation;
}
}
测试类:
package com.diesignpatterns.simplefactory;
public class OperationResult {
public static void main(String[] args) {
Operation operation=OperationFactory.createOperation("-");
operation.setNumberA(1);
operation.setNumberB(2);
double result = operation.getGesult();
System.out.println(result);
}
}
相关文章推荐
- C#设计模式学习笔记---简单工厂模式
- C#设计模式之简单工厂篇
- 用 Delphi 学设计模式 之 简单工厂篇- -
- 设计模式 之 简单工厂
- JAVA设计模式——简单工厂(Simple Factory)模式
- .NET设计模式(1): 简单工厂模式
- C#设计模式之简单工厂篇
- 设计模式之-简单工厂、工厂方法、抽象工厂
- C#设计模式之简单工厂篇
- 第一个设计模式:简单工厂
- 最简单的工厂设计模式 Factory
- [导入]C#设计模式之简单工厂篇
- C#设计模式之简单工厂
- 简单工厂设计模式-设计模式(1)
- 设计模式之Factory1(简单工厂,工厂方法,抽象工厂的比较)
- C#设计模式之简单工厂篇
- C#设计模式之简单工厂篇
- Dot Net 设计模式—简单工厂
- 简单工厂设计模式
- 设计模式-工厂模式-简单工厂