## 单一职责原则
### 理解概念
含义:对于一个类,只有一个引起该类变化的原因;该类的职责是唯一的,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。(来自百度百科)
通俗一点来说,一个类应该只做一类事情;一个类应该只负责一个功能。
目的:降低代码复杂度、系统解耦合、提高可读性
### 使用举例
比如我们需要一个提供创建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();// 播放音乐爱我中华
~~~
- 视觉规范
- 色彩
- 文字
- 偏移
- 图标
- 列表组件
- 表单组件
- 详情组件
- 其他组件
- 研发规范
- 编码规范
- 函数式编程
- 纯函数
- 柯里化
- 函数组合
- 函子
- 面向对象编程
- 设计原则
- 单一职责原则
- 里氏替换原则
- 依赖倒置原则
- 接口隔离原则
- 开闭原则
- 迪米特原则
- 组合复用原则
- 设计模式
- 创建型模式
- 工厂模式
- 简单工厂
- 工厂方法
- 抽象工厂
- 单例模式
- 建造者模式
- 原型模式
- 结构型模式
- 适配器模式
- 桥接模式
- 过滤器模式
- 组合模式
- 装饰器模式
- 外观模式
- 享元模式
- 代理模式
- 行为型模式
- 责任链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模板模式
- 访问者模式
- 组件设计规范
- 组件文档编写规范
- 版本管理规范