码迷,mamicode.com
首页 > Web开发 > 详细

js设计模式之享元模式

时间:2019-08-20 18:24:15      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:false   prot   lse   实例   构造   enum   OLE   style   ida   

享元模式(具有共性的实例对象,归并到一个类别中,避免重复创建相同实例对象)
var candidateNum = 10 // 考生数量
var examCarNum = 0 // 驾考车的数量

/* 驾考车构造函数 */
function ExamCar(carType) {
examCarNum++
this.carId = examCarNum
this.carType = carType ? ‘手动档‘ : ‘自动档‘
}

ExamCar.prototype.examine = function (candidateId) {
console.log(‘考生- ‘ + candidateId + ‘ 在‘ + this.carType + ‘驾考车- ‘ + this.carId + ‘ 上考试‘)
}

var manualExamCar = new ExamCar(true)
var autoExamCar = new ExamCar(false)

for (var candidateId = 1; candidateId <= candidateNum; candidateId++) {
var examCar = candidateId % 2 ? manualExamCar : autoExamCar
examCar.examine(candidateId)
}

console.log(‘驾考车总数 - ‘ + examCarNum)
// 输出: 驾考车总数 - 2
 
 
 
非享元模式
var studentNum = 10 // 考生数量
var carNum = 0 // 驾考车的数量

/* 驾考车构造函数 */
function ExamCar(carType) {
carNum++
this.carId = carNum
this.carType = carType ? ‘手动档‘ : ‘自动档‘
}

ExamCar.prototype.examine = function (studentId) {
console.log(‘考生- ‘ + studentId + ‘ 在‘ + this.carType + ‘驾考车- ‘ + this.carId + ‘ 上考试‘)
}

// var manualExamCar = new ExamCar(true)
// var autoExamCar = new ExamCar(false)

for (var studentId = 1; studentId <= studentNum; studentId++) {
var examCar = new ExamCar(studentId % 2)
examCar.examine(studentId)
}

console.log(‘驾考车总数 - ‘ + carNum)
// 输出: 驾考车总数 - 10

js设计模式之享元模式

标签:false   prot   lse   实例   构造   enum   OLE   style   ida   

原文地址:https://www.cnblogs.com/rrrjc/p/11384504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!