设计模式
2015-08-13 10:28
218 查看
一、简单工厂模式
组成要素:各产品父类(即有共性的产品类)、各产品生产类、工厂(根据参数判断加工产品即调用产品生产类)
例子:用面向对象语言实现一个计算机控制台程序,要求输入两个数和运算符合,得到结果。
1.计算器父类:
package designPattern.simpleFactory;
public class Operation {
private double numberA;
private double numberB;
public double getResult(){
double result=0;
return result;
}
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;
}
}
2.加、减、乘、除子类:
package designPattern.simpleFactory;
public class AddOperation extends Operation {
public double getResult(){
double result=0;
result=this.getNumberA()+this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class SubOperation extends Operation{
public double getResult(){
double result=0;
result=this.getNumberA()-this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class MulOperation extends Operation{
@Override
public double getResult() {
double result=0;
result=this.getNumberA()*this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class DivOperation extends Operation{
@Override
public double getResult() {
double result=0;
if(this.getNumberB()==0)
try {
throw new Exception("除数不能为0。");
} catch (Exception e) {
e.printStackTrace();
}
result=this.getNumberA()/this.getNumberB();
return result;
}
}
3.工厂类:
package designPattern.simpleFactory;
public class OperationFactory {
public Operation createOperation(String operate){
Operation operation=null;
switch(operate){
case "+":
operation=new AddOperation();
break;
case "-":
operation=new SubOperation();
break;
case "*":
operation=new MulOperation();
break;
case "/":
operation=new DivOperation();
break;
}
return operation;
}
public static void main (String args[]){
OperationFactory factory=new OperationFactory();
//加法计算
AddOperation addOper=(AddOperation) factory.createOperation("+");
addOper.setNumberA(5);
addOper.setNumberB(2);
double addResult=addOper.getResult();
System.out.println("加法计算结果:"+addResult);
//减法计算
SubOperation subOper=(SubOperation) factory.createOperation("-");
subOper.setNumberA(5);
subOper.setNumberB(2);
double subResult=subOper.getResult();
System.out.println("减法计算结果:"+subResult);
//乘法计算
MulOperation mulOper=(MulOperation) factory.createOperation("*");
mulOper.setNumberA(5);
mulOper.setNumberB(2);
double mulResult=mulOper.getResult();
System.out.println("乘法计算结果:"+mulResult);
//除法计算
DivOperation divOper=(DivOperation)factory.createOperation("/");
divOper.setNumberA(5);
divOper.setNumberB(2);
double divResult=divOper.getResult();
System.out.println("除法计算结果:"+divResult);
}
}
组成要素:各产品父类(即有共性的产品类)、各产品生产类、工厂(根据参数判断加工产品即调用产品生产类)
例子:用面向对象语言实现一个计算机控制台程序,要求输入两个数和运算符合,得到结果。
1.计算器父类:
package designPattern.simpleFactory;
public class Operation {
private double numberA;
private double numberB;
public double getResult(){
double result=0;
return result;
}
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;
}
}
2.加、减、乘、除子类:
package designPattern.simpleFactory;
public class AddOperation extends Operation {
public double getResult(){
double result=0;
result=this.getNumberA()+this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class SubOperation extends Operation{
public double getResult(){
double result=0;
result=this.getNumberA()-this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class MulOperation extends Operation{
@Override
public double getResult() {
double result=0;
result=this.getNumberA()*this.getNumberB();
return result;
}
}
package designPattern.simpleFactory;
public class DivOperation extends Operation{
@Override
public double getResult() {
double result=0;
if(this.getNumberB()==0)
try {
throw new Exception("除数不能为0。");
} catch (Exception e) {
e.printStackTrace();
}
result=this.getNumberA()/this.getNumberB();
return result;
}
}
3.工厂类:
package designPattern.simpleFactory;
public class OperationFactory {
public Operation createOperation(String operate){
Operation operation=null;
switch(operate){
case "+":
operation=new AddOperation();
break;
case "-":
operation=new SubOperation();
break;
case "*":
operation=new MulOperation();
break;
case "/":
operation=new DivOperation();
break;
}
return operation;
}
public static void main (String args[]){
OperationFactory factory=new OperationFactory();
//加法计算
AddOperation addOper=(AddOperation) factory.createOperation("+");
addOper.setNumberA(5);
addOper.setNumberB(2);
double addResult=addOper.getResult();
System.out.println("加法计算结果:"+addResult);
//减法计算
SubOperation subOper=(SubOperation) factory.createOperation("-");
subOper.setNumberA(5);
subOper.setNumberB(2);
double subResult=subOper.getResult();
System.out.println("减法计算结果:"+subResult);
//乘法计算
MulOperation mulOper=(MulOperation) factory.createOperation("*");
mulOper.setNumberA(5);
mulOper.setNumberB(2);
double mulResult=mulOper.getResult();
System.out.println("乘法计算结果:"+mulResult);
//除法计算
DivOperation divOper=(DivOperation)factory.createOperation("/");
divOper.setNumberA(5);
divOper.setNumberB(2);
double divResult=divOper.getResult();
System.out.println("除法计算结果:"+divResult);
}
}
相关文章推荐
- 微软已变更Win10的激活规则 重装激活可以不使用密钥
- mac上搭建openfire服务器
- HDU 5218 The E-pang Palace (简单几何—2014广州现场赛)
- javascript递归与闭包
- 关于layoutSubviews的一点使用总结
- 清理SQL多余登录信息
- 关于layoutSubviews的一点使用总结
- 2015/8/12 银禧、达到箱体高点卖出一半。资金为正,关注是否买入,发现一项需要研究的东西,今天学会了如何判断回踩到位
- Mac下批量删除.svn文件
- An internal error occurred during: “Updating Maven Project”. java.lang.NullPointerException
- ppt幻灯片如何直接转换成pdf电子书
- 【综述】(中科院)樊彬老师-“局部图像特征描述概述”
- Java堆、栈、内存分析
- 业务安全漏洞挖掘归纳总结
- IOS中获取各个文件的目录路径的方法和NSFileManager类
- 点滴记录——Ubuntu 14.04中Solr与Tomcat整合安装
- linux中限制用户登录时间
- python装饰器 备份
- jQuery中没有innerText、innerHtml [转]
- Android基于mAppWidget实现手绘地图(一)--简介