Cocos Creator 之 typescript几种常见的设计模式

导读:本篇文章讲解 Cocos Creator 之 typescript几种常见的设计模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


前言

在这里插入图片描述


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

模式设计

单例模式

在这里插入图片描述

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

代理模式

在这里插入图片描述

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();

观察者模式

在这里插入图片描述

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";

工厂模式

在这里插入图片描述

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{}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112534.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!