Skip to content

Commit cebaf35

Browse files
committed
refactor: refactor format
1 parent 79ad773 commit cebaf35

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

packages/再看设计原则/再看设计原则.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@
104104
上图是操作书的接口,它不符合单一职责原则。这是因为它的getBookID、setBookID函数是对书的数据的操作,而它的addBook函数则是对书的行为的操作,所以该接口做了两件事情
105105

106106
应该将其拆分为两个接口,使每个接口只做一件事情。拆分后的接口如下图所示:
107+
107108
![重构后的书的接口图](./单一职责原则/2.png)
108109

109110
BookData接口负责操作书的数据。BookAction接口负责操作书的行为。原来的BookInfo接口改为实现BookData接口和BookAction接口
@@ -196,9 +197,8 @@ Reader.read(TechnicalBook)
196197
```
197198

198199
现在增加小说书,读者只能阅读技术书或者小说书,这由Client决定。
199-
修改后的领域模型如下:
200+
修改后的领域模型如下:
200201

201-
<!-- 既可以选择阅读技术书或者选择阅读小说书,这具体是由Client决定读者阅读哪类书 -->
202202
![修改后的领域模型图](./依赖倒置原则/2.png)
203203

204204
修改后的伪代码如下:
@@ -244,6 +244,7 @@ Reader.read(TechnicalBook, NovelBook, "novel")
244244
这里的问题是因为Reader依赖了每类书,所以如果一类书发生了变化,或者增加了一类书,那么Reader都需要对应修改代码。
245245

246246
我们需要解除Reader与每类书的依赖,从而使其符合依赖倒置原则。修改后的领域模型如下:
247+
247248
![重构后领域模型图](./依赖倒置原则/3.png)
248249

249250
现在提出了书的接口:Book,让Reader改为依赖书的接口,而不依赖书的实现模块。这样做的好处是只要Book接口不变,它的实现模块的变化不会影响到Reader。修改后的伪代码如下:
@@ -325,6 +326,7 @@ export type type1 = {
325326
![领域模型图](./接口隔离原则/1.png)
326327
327328
系统上线后,发现系统速度非常慢,这是由于User中的complexSerach函数性能太差造成的。我们可以修改User接口,将complexSearch函数拿出来放到新的接口中,从而把原有的接口拆分为两个更小的接口。修改后的领域模型如下:
329+
328330
![重构后的领域模型图](./接口隔离原则/2.png)
329331
330332
现在,管理员可以根据自己的需要使用SimpleUser接口或者ComplexUser接口,只依赖最小的接口,从而符合接口隔离原则
@@ -470,6 +472,7 @@ module B = {
470472
```
471473

472474
继承在函数式编程中的领域模型如下:
475+
473476
![继承的领域模型图](./合成复用原则/1.png)
474477

475478
我们来看下继承的优点:
@@ -484,6 +487,7 @@ module B = {
484487

485488

486489
组合在函数式编程中的领域模型如下:
490+
487491
![组合的领域模型图](./合成复用原则/2.png)
488492

489493
我们来看下组合的优点:

0 commit comments

Comments
 (0)