黑马程序员技术交流社区
标题: 【黑马程序员济南】浅谈设计模式-简单工厂设计模式 [打印本页]
作者: 小鲁哥哥 时间: 2017-11-30 16:21
标题: 【黑马程序员济南】浅谈设计模式-简单工厂设计模式
本帖最后由 小鲁哥哥 于 2017-12-7 15:10 编辑
【黑马程序员济南】简单工厂设计模式
我们都知道面向对象编程有三大特征:封装,集成和多态,那我们如何在实际开发中去灵活运用它呢,今天我给大家聊一聊简单工厂设计模式。简单工厂设计模式的一个核心思想就是高内聚,低耦合,使具体的业务逻辑实现功能和效果展示分离开来。
先给大家举一个没有应用到工厂设计模式的例子:
题目:要求设计一个计算器程序,输入两个数和一个运算符号,计算出结果。
我们先写一个没有用到简单工厂设计模式的代码:
[Java] 纯文本查看 复制代码
public class Progrtam {
public static void 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());
}
}
}
大家可以看到,业务逻辑和效果展示都在一个类里边,这样就是高耦合的体现,如果我们创建一个其他的预算符号是,就需要在写一个类,或者在这个类里直接修改,这在我们的编程思想中使非常不合理的,需要浪费大量的时间去做重复的代码工作,影响我们的效率。如果我们使用简单工厂模式,我们就会非常简单的去增加我们的业务需求。
简单的工厂模式代码如下:
[Java] 纯文本查看 复制代码
//运算工厂类
public class OperationFactory {
//创建Operation的工厂方法
public static Operation createOperate(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;
}
}
注:以上代码有一些是伪代码,所以大家在编译运行的时候要根据自己的实际情况进行修改,切勿直接粘贴复制!
如上我们如果想要添加一种额外的运算方法时,只是需要创建一个单独的运算类,在工厂类里添加对应的方法即可,没有去更改其他运算类的业务逻辑,做到了低耦合的设计思想。
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
黑马程序员济南中心联系电话:0531-55696830
作者: sunyiran 时间: 2017-12-3 14:25
请对自己的代码负责,因为看到什么骚操作,可是根本不能执行
作者: 黑马小黄人 时间: 2017-12-3 14:36
面向接口编程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |