看看用TypeScript怎樣實現常見的設計模式,順便復習一下。
學模式最重要的不是記UML,而是知道什么模式可以解決什么樣的問題,在做項目時碰到問題可以想到用哪個模式可以解決,UML忘了可以查,思想記住就好。
這里盡量用原創(chuàng)的,實際中能碰到的例子來說明模式的特點和用處。

簡單工廠模式 Simple Factory

特點:把同類型產品對象的創(chuàng)建集中到一起,通過工廠來創(chuàng)建,添加新產品時只需加到工廠里即可,也就是把變化封裝起來,同時還可以隱藏產品細節(jié)。

用處:要new多個同一類型對象時可以考慮使用簡單工廠。

注意:對象需要繼承自同一個接口。

下面用TypeScript寫一個槍工廠來看看簡單工廠模式:

enum GunType{
    AK,
    M4A1,
}interface Shootable{
    shoot();
}abstract class Gun implements Shootable{ // 抽象產品 - 槍
    abstract shoot();
}class AK47 extends Gun{ //具體產品 - AK47
    shoot(){        console.log('ak47 shoot.');
    }
}class M4A1 extends Gun{ //具體產品 - 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