JS设计模式

/*
    JS 单例模式
    只能有一个实例,已经有实例则返回该实例,否则创建一个实例并返回
  */
 class SignleObject {
   constructor(name) {
     this.name =name
   }
   getName() {
     console.log(this.name)
   }
   static getInstance(name) {
     if(this.instance) return this.instance
     this.instance =  new SignleObject(name)
     return this.instance
   }
 }
//  let a = SignleObject.getInstance('a')
//  let b = SignleObject.getInstance('b')
//  console.log('a == b:',a == b)
/*
  工厂模式
  以流水线的方式产生对象
*/
function UserFactory(name,age) {
  let obj = {}
  obj.name =name
  obj.age = age
  return obj
}
let a = UserFactory('zhangsan',18)
let b = UserFactory('lisi',20)
/*
  观察者模式
  又称发布订阅者模式,经典案例:事件监听,一个元素同时监听多个同类型事件,元素对象即为发布者,每一个事件处理函数即为订阅者。
*/
/*
  策略模式
  选择策略,返回
*/
const obj = {
  A:function(name) {
    return 'my name is' + name
  },
  B:function(name) {
    return 'my name is' + name
  },
  C:function(name) {
    return 'my name is' + name
  }
}
const select = function(op,name) {
  return obj[op](name)
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值