抽象工厂模式(Abstract Factory Pattern)
|
1 2 3 |
定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。或者说,是其他工厂的工厂。 目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 场景:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
class User { constructor(type, name) { if (new.target === User) { throw new Error('抽象类不能实例化!') } this.type = type this.name = name this.viewPage = ['首页', '通讯录', '发现页'] } } class UserOfWechat extends User { constructor(name) { super('wechat', name) } } class UserOfQQ extends User { constructor(name) { super('qq', name) } } const userClasses = { wechat: UserOfWechat, qq: UserOfQQ } function getUserClass(type) { const UserClass = userClasses[type] if (!UserClass) { throw new Error(`不支持的用户类型:${type}`) } return UserClass } const WechatUserClass = getUserClass('wechat') const wechatUser = new WechatUserClass('卡卡罗特') |