这是我参与「第四届青训营 」笔记创作活动的的第4天
设计模式的基本介绍
官方定义: 软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
简单来说,学习设计模式,是可以帮助我们写出高质量的代码,能够帮助我们提高代码的可扩展性以及重用性等。
举个例子:
假设一家商店可以卖水果以及饮料等,使用程序来写售卖水果以及饮料的代码,如果不是使用设计模式去写一个代码,那么代码也许是这样的:
function sellGood(good) {
if (good === 'fruit') {
console.log("创建水果信息");
console.log("卖水果");
}
if (good === 'drink') {
console.log("创建饮料信息");
console.log("卖饮料");
}
}
如此一来,它的耦合度会非常高,因为所有的商品的售卖过程都写在同一个函数里面,代码容易出错,这样是不好的, 并且商品的类型也不同,而且相似函数也多,代码的复用性就会非常低,所以,如果使用了设计模式,那么代码也许是这样的:
let good = {
'fruit': 10,
'drink': 15
}
// 先创建一个商品类
class Good {
constructor(name, price) {
this.name = name;
this.price = price;
}
sell() {
console.log("卖商品" + this.name);
}
}
function sellGoods() {
for (let item in good) {
new Good(item).sell();
}
}
可以看出,使用了设计模式之后的代码,如果要售卖另外的商品的话,则不需要通过修改原来的结构,而是直接 在 good 中新创建一个商品及价格就可以了,这样就提高了代码的扩展性。
设计模式的原则
- 开 - 闭原则
- 里氏代换原则
- 合成复用原则
- 依赖倒转原则
- 接口隔离原则
- 单一职责原则
- 迪米特法则(最小知识原则)
部分原则介绍
1. 开 - 闭原则
开 - 闭原则,与前面的商品售卖的例子相似,主要就是说模块需要对扩展开放,对修改关闭。就是模块要不改变其原有的结构,而去扩展新的内容出来,前面所讲述的售卖商品的例子,如果要售卖新的商品,就新创建一个商品出来然后售卖,不用去修改它本身的结构。
2. 里氏代换原则
里氏代换原则,主要讲述的是继承,就是说父类原有的功能,子类它不能去改变,而是可以去扩展,因为继承,子类拥有父类的行为功能,所以父类替换成它的子类,它的行为功能不会有变化。
3. 合成复用原则
合成复用原则,就是相当于委派,可以通过这种方式去复用父类的部分功能,而不是把父类的所有功能都继承下去,这样就能避免了大量无用的方法或者出现大量的问题。
......
总结
本文主要包含了设计模式的基本介绍以及个人理解,同时简单地介绍了设计模式原则中的部分原则以及对它们的理解解释,如果想要对设计模式进行更深层次的理解,就需要多查找一些相关资料,然后结合一些案例来理解,对于我个人来说,这样的做法使我对设计模式能够更容易理解。
互相学习,共同进步。