## 單一職責原則
### 理解概念
含義:對于一個類,只有一個引起該類變化的原因;該類的職責是唯一的,所謂職責是指類變化的原因。如果一個類有多于一個的動機被改變,那么這個類就具有多于一個的職責。而單一職責原則就是指一個類或者模塊應該有且只有一個改變的原因。(來自百度百科)
通俗一點來說,一個類應該只做一類事情;一個類應該只負責一個功能。
目的:降低代碼復雜度、系統解耦合、提高可讀性
### 使用舉例
比如我們需要一個提供創建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();// 播放音樂愛我中華
~~~
- 視覺規范
- 色彩
- 文字
- 偏移
- 圖標
- 列表組件
- 表單組件
- 詳情組件
- 其他組件
- 研發規范
- 編碼規范
- 函數式編程
- 純函數
- 柯里化
- 函數組合
- 函子
- 面向對象編程
- 設計原則
- 單一職責原則
- 里氏替換原則
- 依賴倒置原則
- 接口隔離原則
- 開閉原則
- 迪米特原則
- 組合復用原則
- 設計模式
- 創建型模式
- 工廠模式
- 簡單工廠
- 工廠方法
- 抽象工廠
- 單例模式
- 建造者模式
- 原型模式
- 結構型模式
- 適配器模式
- 橋接模式
- 過濾器模式
- 組合模式
- 裝飾器模式
- 外觀模式
- 享元模式
- 代理模式
- 行為型模式
- 責任鏈模式
- 命令模式
- 解釋器模式
- 迭代器模式
- 中介者模式
- 備忘錄模式
- 觀察者模式
- 狀態模式
- 策略模式
- 模板模式
- 訪問者模式
- 組件設計規范
- 組件文檔編寫規范
- 版本管理規范