咱们在学设计模式之前想一个问题...
为什么要学设计模式?
相信大家多多少少都有这个疑问,先让我们来看一下例子吧~
假设有个需求,某个商品搞活动
- 尝鲜价:满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 五大设计原则
- S-单一功能原则
- 一个程序只做好一件事
- 如果功能过于复杂就拆分开,每个部分保持独立
- O-开放封闭原则
- 对扩展开放,对修改封闭
- 增加需求时,扩展新代码,而非修改已有代码
- L-里氏替换原则
- I-接口隔离原则
- D-依赖倒置原则
这五种要求其实并不需要全部掌握,在js中主要用到的设计原则其实还是围绕着“单一”和”开放封闭“展开;
其他文章陆续更新: