JavaScript 【设计模式】之开篇

32 阅读2分钟

咱们在学设计模式之前想一个问题...

为什么要学设计模式?

相信大家多多少少都有这个疑问,先让我们来看一下例子吧~

假设有个需求,某个商品搞活动

  • 尝鲜价:满200减30,否则打九折;
  • 老客户:满200减50,否则打九折;
  • 等等;

现在的需求是设计一个函数根据不同类型输出不同价格;

if-else 魔鬼型

设不同类型type:
    A   // 尝鲜价
    B   // 老客户

function setPrice(type, price){
    if(type == 'A'){
        if(price >= 200){
            return price-30;
        }
        return price*0.9
    }else if(type == 'B'){
        if(price >= 200){
            return price-50;
        }
        return price*0.9
    }
    ...
}

可以看到,该setPrice中逻辑看起来就非常不清晰,非常臃肿,也不利于后期维护;

那么再让我们看看通过 策略模式 优化后的函数吧:
【这里de策略模式暂时不需要去理解,直接看结果就行~】

const priceProc = {
    A: (price){
        if(price >= 200){
            return price-30;
        }
        return price*0.9
    },
    B: (price){
        if(price >= 200){
            return price-50;
        }
        return price*0.9
    }
    ...
}
function setPrice(type, price){
    return priceProc[type](price)
}

这就是设计模式其中的一种实现,if-else消失不见,代码看着清清爽爽、功能独立、简洁易懂 ;

它也让我们能够在众多竞争对手中拥有份 核心竞争力 ~! 【其实这就是我们为什么要学设计模式,说白了就是提升自我代码编写能力,稳固地位,拿高薪 (●'◡'●)🤭】

那什么是设计模式?

从上面的例子可以看出,设计模式即为了代码的重复使用、可扩展、可解耦,为了容易理解和保证可靠性而产生的解决方案

设计模式的种类

设计模式中共有23种设计模式... 是的,23种... (⊙ˍ⊙)

那么具体有哪23种,就百度下吧 😁

S O L I D 五大设计原则

  1. S-单一功能原则
  • 一个程序只做好一件事
  • 如果功能过于复杂就拆分开,每个部分保持独立
  1. O-开放封闭原则
  • 对扩展开放,对修改封闭
  • 增加需求时,扩展新代码,而非修改已有代码
  1. L-里氏替换原则
  2. I-接口隔离原则
  3. D-依赖倒置原则

这五种要求其实并不需要全部掌握,在js中主要用到的设计原则其实还是围绕着“单一”和”开放封闭“展开;

其他文章陆续更新

JavaScript 【设计模式】 之 单例模式