看看用TypeScript怎样实现常见的设计模式,顺便复习一下。
学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思想记住就好。
这里尽量用原创的,实际中能碰到的例子来说明模式的特点和用处。
简单工厂模式 Simple Factory
特点:把同类型产品对象的创建集中到一起,通过工厂来创建,添加新产品时只需加到工厂里即可,也就是把变化封装起来,同时还可以隐藏产品细节。
用处:要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