抽象工厂模式(Abstract Factory Pattern)

定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。或者说,是其他工厂的工厂。
目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
场景:系统的产品有多于一个的产品族,而系统只消费其中某一族的产品。

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('贝吉塔')

Git地址:https://github.com/skillnull/Design-Mode-Example

相关文章:

  • 2021-06-03
  • 2021-12-13
  • 2021-07-01
  • 2022-01-20
  • 2021-11-06
  • 2021-10-29
  • 2021-10-15
猜你喜欢
  • 2022-03-09
  • 2021-08-03
  • 2021-05-17
  • 2021-06-08
  • 2021-11-08
  • 2021-06-16
相关资源
相似解决方案