看看用TypeScript怎樣實(shí)現(xiàn)常見(jiàn)的設(shè)計(jì)模式,順便復(fù)習(xí)一下。
學(xué)模式最重要的不是記UML,而是知道什么模式可以解決什么樣的問(wèn)題,在做項(xiàng)目時(shí)碰到問(wèn)題可以想到用哪個(gè)模式可以解決,UML忘了可以查,思想記住就好。
這里盡量用原創(chuàng)的,實(shí)際中能碰到的例子來(lái)說(shuō)明模式的特點(diǎn)和用處。
簡(jiǎn)單工廠(chǎng)模式 Simple Factory
特點(diǎn):把同類(lèi)型產(chǎn)品對(duì)象的創(chuàng)建集中到一起,通過(guò)工廠(chǎng)來(lái)創(chuàng)建,添加新產(chǎn)品時(shí)只需加到工廠(chǎng)里即可,也就是把變化封裝起來(lái),同時(shí)還可以隱藏產(chǎn)品細(xì)節(jié)。
用處:要new多個(gè)同一類(lèi)型對(duì)象時(shí)可以考慮使用簡(jiǎn)單工廠(chǎng)。
注意:對(duì)象需要繼承自同一個(gè)接口。
下面用TypeScript寫(xiě)一個(gè)槍工廠(chǎng)來(lái)看看簡(jiǎn)單工廠(chǎng)模式:
enum GunType{ AK, M4A1, }interface Shootable{ shoot(); }abstract class Gun implements Shootable{ // 抽象產(chǎn)品 - 槍 abstract shoot(); }class AK47 extends Gun{ //具體產(chǎn)品 - AK47 shoot(){ console.log('ak47 shoot.'); } }class M4A1 extends Gun{ //具體產(chǎn)品 - M4A1 shoot(){ console.log('m4a1 shoot.'); } }class GunFactory{ static createGun(type: GunType): Gun{ switch(type){ case GunType.AK: return new AK47(); case GunType.M4A1: return new M4A1(); &nb