抽象工厂模式(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 42 43 44 |
class User { constructor (type) { if (new.target === User) { throw new Error('抽象类不能实例化!') } this.type = type } } class UserOfWechat extends User { constructor (name) { super('wechat') this.name = name this.viewPage = ['首页', '通讯录', '发现页'] } } class UserOfQQ extends User { constructor (name) { super('qq') this.name = name this.viewPage = ['首页', '通讯录', '发现页'] } } function getUser (type) { switch (type) { case 'wechat': return UserOfWechat break case 'qq': return UserOfQQ break default: throw new Error('参数错误') break } } let WechatUserClass = getUser('wechat') let QQUserClass = getUser('qq') let wechatUser = new WechatUserClass('卡卡罗特') let qqUser = new QQUserClass('贝吉塔') |