享元模式(具有共性的实例对象,归并到一个类别中,避免重复创建相同实例对象)
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