看看用TypeScript怎樣實(shí)現(xiàn)常見的設(shè)計(jì)模式,順便復(fù)習(xí)一下。
學(xué)模式最重要的不是記UML,而是知道什么模式可以解決什么樣的問題,在做項(xiàng)目時(shí)碰到問題可以想到用哪個(gè)模式可以解決,UML忘了可以查,思想記住就好。
這里盡量用原創(chuàng)的,實(shí)際中能碰到的例子來說明模式的特點(diǎn)和用處。
職責(zé)鏈模式 Chain of Responsibility
特點(diǎn):可以讓一個(gè)請(qǐng)求被不同的對(duì)象處理多次,請(qǐng)求像經(jīng)過管道一樣, 一路上都可以被攔下處理。
用處:當(dāng)請(qǐng)求需要被鏈?zhǔn)教幚頃r(shí),可以考慮職責(zé)鏈模式,比如事件的冒泡,WebApi的管道Handler等。
注意:鏈的實(shí)現(xiàn)。
WebApi的handler可能大家有用過,對(duì)發(fā)出去的請(qǐng)求和請(qǐng)求回來的數(shù)據(jù)都可以用自定義handler在發(fā)出前或最終回來前進(jìn)行處理,非常方便,下面用TypeScript來簡(jiǎn)單實(shí)現(xiàn)一個(gè)HttpHandler:
先建立一個(gè)抽象Handler類,包含一個(gè)發(fā)送請(qǐng)求的sendReqeust以及用來鏈?zhǔn)教幚淼膇nnerHandler:
abstract class HttpHandler{ &