单例模式:
在使用构造函数时,保证全局只有一个new 出来的对象,后续无论如何调用,都是显示为第一次构造的对象;需更改内部属性,可以通过提供函数接口更改
核心:
确保只有一个实例,并提供全局访问
`
class student1{
constructor({name,age,sex}){
this.name = name;
this.age = age;
this.sex = sex;
}
getName(){
return this.name
}
getAge(){
return this.age
}
setName(name){
this.name = name
}
setAge(age){
this.age = age
}
}
class student2 extends student1 {
constructor(obj){
super(...arguments)
}
setAge(age){
super.setAge( age + '岁' )
}
getAge(){
let age = super.getAge()
return typeof age == 'string' ? age: age + '岁'
}
}
// 使用student2进行设计单例模式
var student = (function (){
var stu = null;
return function (obj) {
if(!stu){
stu = new student2(obj)
}
return stu
}
})()
let s1 = student({
name:'小马',
age: 33,
sex: "女"
})
console.log("1年纪是", student().getAge()) // 33
let s2 = student({
name:'小刚2',
age: 133,
sex: "男女未知"
})
console.log("2年纪是", s2.getAge()) // 33
`
在这里例子中(稍微繁琐加了extends功能);无论如何调用student函数,其返回的student2实例永远都是那一个。
标签:getAge,return,name,student,age,模式,sex,单例,设计模式 From: https://www.cnblogs.com/MrZhous/p/17222620.html