优化代码之使用策略模式(解决if..else..问题)

本文探讨了在面对if...else...结构导致的代码维护性和可读性问题时,如何通过策略模式进行优化。策略模式遵循开闭原则和单一原则,允许在不修改原有代码的情况下增加或删除策略。文中介绍了策略模式的概念,以及如何在实践中运用,包括定义接口、创建不同策略的实现类,并通过Map对象进行策略的存储和调用。
摘要由CSDN通过智能技术生成

以下内容来自我个人的笔记整理,参考了一些非常优秀的博主和开发者的文章,在此表示感谢,本篇博文并非全部原创内容。

优化场景

这是一种非常常见到的场景,那就是if…else…这种场景

if(type=="A"){
   
   //按照A格式解析
 
}else if(type=="B"){
   
    //按B格式解析
}else{
   
    //按照默认格式解析
}

这个代码可能会存在哪些问题呢?😶‍🌫️😶‍🌫️

如果分支变多,这里的代码就会变得臃肿,难以维护,可读性低。
如果你需要接入一种新的解析类型,那只能在原有代码上修改。
说得专业一点的话,就是以上代码,违背了面向对象编程的开闭原则以及单一原则。

开闭原则(对于扩展是开放的,但是对于修改是封闭的):增加或者删除某个逻辑,都需要修改到原来代码

单一原则(规定一个类应该只有一个发生变化的原因):修改任何类型的分支逻辑代码,都需要改动当前类的代码。

如果你的代码就是酱紫:有多个if…else等条件分支,并且每个条件分支,可以封装起来替换的,我们就可以使用策略模式来优化。

这种代码,说句实在话真的是地狱,特别是在访问量很大的时候,代码效率会被大大降低,那么怎么解决这种情景?那就是本篇博文的主角——策略模式

策略模式

摘自百度百科🐳🐳

策略模式是指有一定行动内容的相对稳定的策略名称。策略模式在古代中又称“计策”,简称“计”,如《汉书·高帝纪上》:“汉王从其计”。这里的“计”指的就是计谋、策略。策略模式具有相对稳定的形式,如“避实就虚”、“出奇制胜”等。一定的策略模式,既可应用于战略决策,也可应用于战术决策;既可实施于大系统的全局性行动,也可实施于大系统的局部性行动。

策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中(在上面的话也就是type A B C …),从而使得它们可以相互替换。

实践

策略模式怎么使用呢?

一个接口或者抽象类,里面两个方法(一个方法匹配类型,一个可替换的逻辑实现方法)
不同策略的差异化实现(就是说,不同策略的实现类)
使用策略模式

定义一个接口

public interface IFileStrategy {
   
    //属于哪种文件解析类型
    FileTypeResolveEnum gainFileType();

    //封装的公用算法(具体的解析方法)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是X大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值