JavaScript设计模式经典-面向对象中六大原则

file

作者 | Jeskson
来源 | 达达前端小酒馆

1

主要学习JavaScript中的六大原则。那么六大原则还记得是什么了吗?六大原则指:单一职责原则(SRP),开放封闭原则(OCP),里氏替换原则(LSP),依赖倒置原则(DIP),接口分离原则(ISP),最少知识原则(LKP)。

单一职责原则
开放封闭原则
里氏替换原则
依赖倒置原则
接口分离原则
最少知识原则

那么什么是单一职责原则呢?单一职责原则,英文单词为:single responsable princple,原则体现为,一个对象或者是方法只做一件事。

从前车马很慢,书信很远,一生只够爱一个人。“从前的日色变得慢,车,马,邮件都慢,一生只够爱一个人 从前的锁也好看,钥匙精美有样子,你锁了,人家就懂了”(一个对象或者是方法只做一件事情)

如果一个方法承担了很多很多的职责,那么它在需求发生变化的过程中,需要改写这个方法的可能性就很大。

单一职责原则,一个类只提供一种功能,不要存在过多导致类变化的原因。从前,一个人负责两个不同的任务,为任务1,任务2,当任务1需要做调整时,而需要这个人做修整时,有可能会影响任务2的正常运行,会导致任务2没有办法完成。

遵循单一职责原则,就可以解决这种情况的发生,分别让两个人分别做任务1,任务2,让人1做任务1,让人2做任务2,这样,当需要改变任务1时,不会影响到任务2的正常运行,同理,任务2需要做修改时,人1做的事也不会发生影响。

里氏替换原则:所有引用基类的地方必须能够使用其子类的对象,从前有一个游戏玩家A,它有一个招式Z1,现在把这个招式Z1进行扩展,扩展后成为大招Z,其大招Z由原来的招式Z1和新功能Z2组成,新功能Z又由游戏玩家A的子类徒弟游戏玩家B去完成,那么这个子类徒弟游戏玩家B在完成这个新功能Z2的同时,有可能会影响到原来的招式Z1,而导致招式发生错误。

(迪米特法则:只与直接的朋友通信),每个对象都会和其他对象有耦合的关系,只要两个对象之间有耦合关系,就说这两个对象之间是朋友关系。

2

开放封闭原则,类,方法等应当对其扩展开放,对其修改封闭,在不修改的前提下进行扩展,扩展开发,当有新的需求出现的时候,我们可以对其进行扩展现有的方法,对象等已到达目的;修改关闭,不能对实体进行任何的修改。

不修改现有的功能方法,就可以进行实现各种变化的代码。

// 定义一个方法 function da(x, y) { document.getElementById(x).style.color = y; } // 调用方法da da(\'dashucoding\', \'red\'); // 开发封闭原则 -> 错误 // 定义方法 function da(x, y, z) { document.getElementById(x).style.color = y; document.getElementById(x).style.size = z; } // 调用方法da da(\'dashucoding\', \'red\', \'100px\'); // 定义一个方法 function da(x, y) { document.getElementById(x).style.color = y; } // 不去动da这个方法 function dada(x, y, z) { da(x,y); document.getElementById(x).style.size = z; } // 正确使用开发封闭原则 function da(x, y) { document.getElementById(x).style.color = y; } da(\'dashucoding\', \'red\'); function dada(x, y, z) { da(x,y); document.getElementById(x).style.size = z; } dada(\'dashucoding\', \'red\', \'100px\');

单一职责原则,简介,就一个类而言,应该仅有一个引起它变化的原因。

开放封闭原则,简介,软件实体对扩展是开放的,但对修改是关闭的。即在不修改一个软件实体的基础上去扩展其功能。

里氏替换原则,简介,子类必须能够替换它们的基类。

依赖倒置原则,简介,高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。作用,降低了客户与实现模块间的耦合。

接口分离原则,简介,使用多个专门的接口来取代一个统一的接口。

合成复用原则,简介,就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。简单来说就是,要尽量使用组合,尽量不要使用继承。

迪米特法则,简介,又叫做最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。

3

里氏替换原则,就是对开发封闭原则进行补充,讲的是基类和子类的关系。理解里氏替换原则的最经典的例子是“正方形是长方形”,“鸵鸟不是鸟”等,拿正方形来说,上数学课的时候,我们就知道,正方形是长方形,它是一个长宽相等的长方形,那么由此可以看出,应该让正方形继承自长方形。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzpsz.html