TypeScript之泛型與變體(1)
TypeScript之泛型與變體
TypeScript之泛型與變體
TypeScript之泛型與變體
本節(jié)的內(nèi)容分為三段:
第一段(原本繼承的弊端)
第二段(訪問(wèn)者模式)
第三段(變體分離)
首先,我們現(xiàn)在要設(shè)計(jì)一個(gè)顯示系統(tǒng)。主要功能就是:一個(gè)屏幕要顯示一堆文檔
(text,picture,parature),不同類型的文檔,有不同的渲染方式
按傳統(tǒng)的繼承方式去實(shí)現(xiàn)的話就是 設(shè)計(jì)一個(gè)Doc的接口


但是,這種傳統(tǒng)的繼承對(duì)于軟件的擴(kuò)展有著極大的限制,因?yàn)樗?strong>內(nèi)容和操作放在了一個(gè)實(shí)體中,比如我現(xiàn)在想給Doc加一個(gè)print方法,結(jié)果就是每個(gè)子元素都要重寫一遍是相當(dāng)?shù)目拥?/strong>
為此,軟件開發(fā)的我們提出了 (訪問(wèn)者模式),當(dāng)然這個(gè)模式也不是最好的。
第二段(訪問(wèn)者模式)
這種模式,主要是設(shè)計(jì)出了一個(gè)公共的接口,accept。

因?yàn)檫@個(gè)不是重點(diǎn),所以我并不想多講。因?yàn)樗€不是最好的分離
而變體卻是最好的分離。它的本質(zhì)是將繼承鏈關(guān)系反轉(zhuǎn)。在我們的印象中,Doc的子類繼承了父類。就相當(dāng)于Doc在金字塔的低端。它的子類們?cè)诮鹱炙纳隙恕?/p>
但是在變體分離中,我們要想象成 Doc的盒子裝著 Doc的子類們。但是他們并沒(méi)有代碼上的繼承關(guān)系

2023-8-26? 惠晴_GD