首页 前端知识 Cocos Creator 之 typescript几种常见的设计模式

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

2024-03-17 00:03:20 前端知识 前端哥 33 649 我要收藏

文章目录

  • 前言
  • 模式设计
    • 单例模式
    • 代理模式
    • 观察者模式
    • 工厂模式


前言

在这里插入图片描述


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

模式设计

单例模式

在这里插入图片描述

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.qianduange.cn//article/3865.html
评论
发布的文章

jQuery之class类操作

2024-04-12 20:04:54

jQuery 菜鸟教程学习

2024-04-12 20:04:22

jQuery

2024-01-31 12:01:10

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!