Varios patrones de diseño comunes de texto mecanografiado en Cocos Creator


prefacio

inserte la descripción de la imagen aquí


提示:以下是本篇文章正文内容,下面案例可供参考

patrón de diseño

patrón único

inserte la descripción de la imagen aquí

class SoundManager{
    
    
	static instance:SoundManager;
	// 构造方法私有 防止new
	private constructor(){
    
    }
	
	static Instance(){
    
    
		if(!SoundManager.instance){
    
    
			SoundManager.instance = new SoundManager();
		}
		return SoundManager.instance;
	}
}

modo proxy

inserte la descripción de la imagen aquí

interface ICalc{
    
    
	cale(num1:number,num2:number):number
}
class Npc1 implements ICalc{
    
    
	cale(num1:number,num2:number){
    
    
		return num1 + num2;
	}
}
class Person{
    
    
	delegete:ICalc;
	
	GetNum(num1:number,num2:number){
    
    
		let num = this.delegete.cale(num1,num2);
		console.log(num);
	}
}

let person = new Person();

Patrón de observador

inserte la descripción de la imagen aquí

interface IObserver{
    
    
	nameChanged(newName);
}

class Person{
    
    
	private _name:string;
	observers:Array<IObserver> = new Array<IOserver>();

	set name(value){
    
    
		this._name = value;
		// 发生变化
		// 遍历观察者数组 给所有观察者发消息
		for(let observer of this.observers){
    
    
			observer.nameChanged(this._name)
		}
	}

	get name(){
    
    
		return this._name;
	}
}

class Test implements IObserver{
    
    
	nameChanged(newName){
    
    
		console.log("监听到变化,名称为:"+newName);
	}
}

let person = new Person();
let test = new Test();
// 设置为监听对象
person.observers.push(test);
person.name = "111";

patrón de fábrica

inserte la descripción de la imagen aquí

enum CarType{
    
    
	Audi,
	Benz,
	Bmw
}


class Car{
    
    
	name:string;

	static Create(carType:CarType):Car{
    
    
		let car:Car;
		switch(carType){
    
    
			case CarType.Audi:
				car = new Audi();
				break;
			case CarType.Benz:
				car = new Benz();
				break;
			case CarType.Bmw:
				car = new Bmw();
				break;
		}
		return car;
	}
}

class Audi extends Car{
    
    }
class Benz extends Car{
    
    }
class Bmw extends Car{
    
    }

Supongo que te gusta

Origin blog.csdn.net/Susan003/article/details/127139074
Recomendado
Clasificación