多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 单一职责原则 ### 理解概念 含义:对于一个类,只有一个引起该类变化的原因;该类的职责是唯一的,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。(来自百度百科) 通俗一点来说,一个类应该只做一类事情;一个类应该只负责一个功能。 目的:降低代码复杂度、系统解耦合、提高可读性 ### 使用举例 比如我们需要一个提供创建Ajax的对象。 ~~~js const Ajax = { createAjax: function () { var xhr = null; if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } }, send: function() { } }; // VS const AjaxBetter = { ajaxFactory: function ajax() { if(window.XMLHttpRequest) { return (this.ajaxFactory = function() { return new XMLHttpRequest(); })(); } else { return (this.ajaxFactory = function() { return new ActiveXObject('Microsoft.XMLHTTP'); })(); } }, createAjax() { var xhr = this.ajaxFactory(); return xhr; }, send: function() { } }; ~~~ 单一原则就记住一句话就好了,就是'一个类只对一个功能负责'。比如说现在有拍照和播放音乐两个功能要实现。错误的做法就是把这两个功能都封装到一个类里面,正确的做法是,封装两个类,一个实现拍照功能,一个实现播放音乐的功能。 代码如下: ~~~ // 定义拍照类 class Photograph{ constructor(name){ this.name = name } photograph(){ console.log(`给${this.name}拍照`) } } // 定义播放音乐类 class PlayMusic{ constructor(musicName) { this.musicName = musicName } outMusicName(){ console.log(`播放音乐${this.musicName}`) } } var photograph1 = new Photograph('小明'); var playMusic1 = new PlayMusic('爱我中华'); photograph1.photograph(); // 给小明拍照 playMusic1.outMusicName();// 播放音乐爱我中华 ~~~