关于单一职责是什么,为什么和怎么用的思考。
什么是单一职责?
单一职责就是一个函数只做一件事。
为什么需要单一职责?
打个比方,A函数有功能1,B函数有功能2、3,那么根据自由组合原理,我能实现的功能组合有:1 -> 2, 3 或者 2, 3 -> 1。而假如有将3个功能分为 A、B、C三个函数,那么自由组合将有:
高中数学自由组合公式:Cnm = n!/[m!(n-m)!] , 其中 n、m为上下标
由此得出,c31 = 3!/[1!2!] = 3 种可能
对比之后可以看出,如果单一职责定义函数,那么我们将可以有3种组合形式,而职责杂糅将会影响代码的灵活性。何为灵活性?即新增、删除、改变函数顺序都是自由的。如果杂糅,那么必定会将杂糅的功能绑定在一起,同生共死,因而并不灵活,还是单飞(shen)最自在。
单一职责怎么用?
很简单啊,一个函数一个功能,完事。
那来个基于单一职责实现的链式调用玩一玩吧。
function Person () {
this.name = ''
}
Person.prototype = {
setFirst (first) {
this.name = first + '' + this.name
return this // 注意链式调用的实现,返回原对象是关键
}
setLast (last) {
this.name += ` ${last}`
return this
}
}
let me = new Person()
me.setFirst('liu').setLast('hao wen').name // liu haowen
总结
单一职责其实很简单,它的存在主要是为了产品大佬突然变心情改需求的时候,能够给自己留一条后路,毕竟懒人才想办法嘛!
Gitalking ...
Be the first guy leaving a comment!