Java设计模式——工厂设计模式

13 篇文章 0 订阅
11 篇文章 0 订阅

我们都知道面向对象编程有三大特征:封装,集成和多态,那我们如何在实际开发中去灵活运用它呢,今天我给大家聊一聊简单工厂设计模式。简单工厂设计模式的一个核心思想就是高内聚,低耦合,使具体的业务逻辑实现功能和效果展示分离开来。

先给大家举一个没有应用到工厂设计模式的例子:

题目:要求设计一个计算器程序,输入两个数和一个运算符号,计算出结果。

我们先写一个没有用到简单工厂设计模式的代码:


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());
}
}
}


大家可以看到,业务逻辑和效果展示都在一个类里边,这样就是高耦合的体现,如果我们创建一个其他的预算符号是,就需要在写一个类,或者在这个类里直接修改,这在我们的编程思想中使非常不合理的,需要浪费大量的时间去做重复的代码工作,影响我们的效率。如果我们使用简单工厂模式,我们就会非常简单的去增加我们的业务需求。

简单的工厂模式代码如下:

//运算工厂类
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;
}
}

Tips:以上代码有一些是伪代码,所以大家在编译运行的时候要根据自己的实际情况进行修改,切勿直接粘贴复制!

如上我们如果想要添加一种额外的运算方法时,只是需要创建一个单独的运算类,在工厂类里添加对应的方法即可,没有去更改其他运算类的业务逻辑,做到了低耦合的设计思想。




Good luck!

Write by Jimmy.li










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值