Skip to content

Commit 57cfd79

Browse files
committed
封闭-开放原则
1 parent 503d49a commit 57cfd79

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

nighteen-chapter/index.js

+35
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,38 @@
1+
// 开放-封闭原则(OCP
2+
// 软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改
3+
14
// 最明显的就是找出程序 中将要发生变化的地方,然后把变化封装起来
25
// 1. 放置挂钩
36
// 2. 使用回调函数
7+
var arrayMap = function (array,callback) {
8+
var i = 0,
9+
l = array.length,
10+
value,
11+
ret = [];
12+
13+
for(;i<l;i++){
14+
value = callback(i,array[i]);
15+
ret.push(value);
16+
}
17+
18+
return ret;
19+
}
20+
21+
var a = arrayMap([1,2,3],function(i,n){
22+
return n * 2;
23+
})
24+
25+
var b = arrayMap([1,2,3],function(i,n){
26+
return n * 3;
27+
})
28+
29+
// 设计模式中的开放-封闭原则
30+
//1.发布-订阅模式
31+
//2. 模板方法模式
32+
// 3. 策略模式
33+
// 4. 代理模式
34+
// 5. 职责链模式
35+
36+
// 挑选出最容易发生变化的地方,然后构造抽象来封闭这些变化
37+
// 在不可避免发生修改的时候,尽量修改那些相对容易修改的地方
38+
// 用对象的多态性消除条件分支

0 commit comments

Comments
 (0)