// 实现单例设计模式 利用闭包 缓存实例对象 只产生一个实例
let single=(function(){
? ? let singleObj=null;
? ? function getInstance(){
? ? ? ? if(!singleObj){
? ? ? ? ? ? singleObj=new dialogObj();
? ? ? ? }
? ? ? ? return singleObj
? ? }
? ? function dialogObj(){
? ? ? ? this.name='yang'
? ? }
? ? return getInstance
})()
single().name='zhang';//修改的是一个实例
console.log(single())//还是修改之后的这个实例dialogObj?{name: 'zhang'}
//工厂模式 ?根据传入条件参数不同生成不同的实例对象理解成 生产不同的商品
function WlCar(props){
? ? this.color=props;
? ? this.name='五菱宏光';
}
function DzCar(props){
? ? this.color=props;
? ? this.name='一汽大众';
}
function carFactory(){
? ? this.create=function(type,props){
? ? ? ? if(type=='wl'){
? ? ? ? ? ? return new WlCar(props)
? ? ? ? }else if(type=='dz'){
? ? ? ? ? ?return ?new DzCar(props)
? ? ? ? }
? ? }
}
let carName=[];
let creatCar=new carFactory();
carName.push(creatCar.create('wl','red'));
carName.push(creatCar.create('dz','white'));
console.log(carName);/* 0: WlCar {color: 'red', name: '五菱宏光'}
1: DzCar {color: 'white', name: '一汽大众'} */
|