黑马程序员浅谈设计模式-工厂设计模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【黑马程序员济南】简单工厂设计模式
我们都知道面向对象编程有三大特征:封装,集成和多态,那我们如何在实际开发中去灵活运用它呢,今天我给大家聊一聊简单工厂设计模式。简单工厂设计模式的一个核心思想就是高内聚,低耦合,使具体的业务逻辑实现功能和效果展示分离开来。
先给大家举一个没有应用到工厂设计模式的例子:
题目:要求设计一个计算器程序,输入两个数和一个运算符号,计算出结果。
我们先写一个没有用到简单工厂设计模式的代码:
publicclass Progrtam {
publicstaticvoid main(String[] args){
Console console = System.console();
try{
console.printf("输入数字A");
String strNumberA = console.readLine();
console.printf("请选择运算符号(+,-,*,/)");
String strOperate = console.readLine();
String strNumberB = console.readLine();
String strResult = "";
switch(strOperate)
{
case"+":
strResult = String.valueOf(strNumberA+strNumberB);
break;
case"-":
strResult =
String.valueOf(Double.valueOf(strNumberA)-Double.valueOf(strNumberB));
case"*":
strResult =
String.valueOf(Double.valueOf(strNumberA)*Double.valueOf(strNumberB));
break;
case"/":
strResult =
String.valueOf(Double.valueOf(strNumberA)/Double.valueOf(strNumberB));
break;
}
console.printf("结果是:"+strResult);
console.readLine();
}catch(Exception ex){
console.printf("您输入有误:"+ex.getMessage());
}
}
}
大家可以看到,业务逻辑和效果展示都在一个类里边,这样就是高耦合的体现,如果我们创
建一个其他的预算符号是,就需要在写一个类,或者在这个类里直接修改,这在我们的编程思想中使非常不合理的,需要浪费大量的时间去做重复的代码工作,影响我们的效率。如果我们使用简单工厂模式,我们就会非常简单的去增加我们的业务需求。
简单的工厂模式代码如下:
//运算工厂类
publicclass OperationFactory {
//创建Operation的工厂方法
publicstatic OperationcreateOperate(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;
}
return oper;
}
}
如上我们如果想要添加一种额外的运算方法时,只是需要创建一个单独的运算类,在工厂类里添加对应的方法即可,没有去更改其他运算类的业务逻辑,做到了低耦合的设计思想。