网站首页 > java教程 正文
最近在review开发的代码,其中产品有一段功能是抽奖发送权益,权益有多种:实物权益、电子优惠券、话费等等,发放的权益在创建活动时后台配置
其中一位兄弟代码逻辑如下:
public class CommController{
public Res sendComm(){
//送话费
if(activity.getCommodityType==1){
mobileService.toped(user.getMobile(),100);
.....此处省略几十行..
}else if(activity.getCommodityType==2){//优惠券
couponService.send(user.getUserId(),coupon.getId());
...此处省略几十行....
}else if(activity.getCommodityType==3){
...此处省略几十行..
}
}
}
这么看也没啥问题,但是写这代码的兄弟不在了~ 新人接手这段代码,即使没有非常吃力,但也要逐行去看慢慢梳理,还不见得敢改这块逻辑。
说说个人看法:
这里如果用工厂模式,统?了?参、统?下结果,就能非常清晰的看到一整套发放奖品服务的完整性了。具体改造如下:
抽象类:ICommodity.java
public interface ICommodity{
void sendCommodity(String userId,String commodityId,Integer bizId,Map<String,String> extData) throws Exception;
}
所有的奖品?论是实物、虚拟还是第三?,都需要通过我们的程序实现此接?进?处理,以保证最 终?参出参的统?性。 接?的?参包括; ?户ID 、 奖品ID 、 业务ID 以及 扩展字段 ?于处理发放实物商品时的收获地 址。
实现类改造:
mobileService、couponService 实现ICommdity接口,重写sendCommdity逻辑
增加工厂类:
CommodityFactory
public class CommodityFactory {
public ICommodity getCommodityService(Integer commodityType) {
switch(commodityType){
case 1:
return new mobileService();
case 2:
return new couponService();
case 3:
......
default return null;//throw new RuntimeException("不存在的商品服务类型");
}
}
}
好了,我们来看下结构:
|- CommodityFactory
|- ICommodity
|- mobileService
|- couponService
是不是比较清晰,一眼能看出业务结构
我们再回头看下上面那段代码,这么写是不是结构就很清晰了呢:
public class CommController{
public Res sendComm(){
CommodityFactory commodityFactory = new CommodityFactory();
ICommodity commodityService = commodityFactory.getCommodityService(activity.getCommodityType);
commodityService.sendCommodity(user.getUserId(), coupon.getId(),
"791098764902132", null);
}
}
???法模式并不复杂,甚?这样的开发结构在你有所理解后,会发现更加简单了。 那么这样的开发的好处知道后,也可以总结出来它的优点; 避免创建者与具体的产品逻辑耦合。满足单一职责、开闭原则
弊端:如果权益类型非常的多,那么实现类会非常多,不便维护,因此,也需要使用其他的模式进行优化
后面会继续结合本人实际工作中遇到的场景,跟大家聊聊其他模式
猜你喜欢
- 2024-10-23 Java的简单工厂模式(java简单工厂模式实验总结)
- 2024-10-23 Java开发篇——设计模式(3)面试被问工厂模式?不要怕看这里
- 2024-10-23 架构师成长之路:Java设计模式之工厂模式
- 2024-10-23 Java的设计模式(十一):三种工厂模式区别,SpringBoot中的运用
- 2024-10-23 Java——工厂方法模式(java的工厂模式是什么意思啊)
- 2024-10-23 Java编程细节——设计模式之工厂模式
- 2024-10-23 Java之工厂方法(Factory Method)(java工厂模式的应用场景)
- 2024-10-23 Java工厂设计模式学习笔记(详细总结)
- 2024-10-23 教你轻松学Java开发23种设计模式 --工厂设计模式
- 2024-10-23 java设计模式-创建者模式-工厂模式
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)