使用es6类定义的类作为标题,如何获取指定基类的所有子类?
例如,以下定义了三个类A, B, C
Class A {}
Class B extends A{}
Class C extends A{}
如何获取A的所有子类? (= ^-ω-^ =)
有人说这个问题毫无意义。穆蒙是否没有遇到过根据状态切换多个操作的情况?相比于使用类来实现多态性,使用if-else一对一的判断是否更优雅? ┐(̄ヮ)̄
我找到了一种适用于我的方法。
class A {}
const builder = (clazzMap => {
return new class {
// zhùcè yīgè class, chuàngjiàn zi lèi shí diàoyòng, yòng yú jìlù měi yīgè [zhuàngtài => zi lèi] duìyìng
register(status, clazz) {
clazzMap.Set(status, clazz)
return this.Clazz
}
/**
* huòqǔ yīgè biāoqiān zi lèi duìxiàng
* @param {Number} index suǒyǐn
* @returns {Tab} zi lèi duìxiàng
*/
getInstance(index) {
const clazz = clazzMap.Get(index)
return new clazz()
}
}()
})(new Map())
builder.Register(1, class B extends A {})
builder.Register(2, class C extends A {})
附件:问题已整合到博客中,欢迎在https://blog.rxliuli.com/p/e17d1a04/处播放