cocos ceator笔记(7)

1.单例模式

在这里插入图片描述

//创建单例方法1  代码运行的时候就生成对象
class SoundManager{
	static Instance = new SoundManager();//设置一个静态对象,对象属于类
	private constructor(){}
}
//用声音管理类
SoundManager.Instance
//创建单例方法2  用的时候才会创建对象
class SoundManager{
	private static instance : SoundManager;//设置一个静态对象,对象属于类
	private constructor(){}
	static Instance(){
		//当前单例是否产生
		//懒加载
		if(!SoundManager.instance){
			SoundManager.instance = new SoundManger();
		}
		return SoundManger.instance;
	}
}
	
//用声音管理类
SoundManager.Instance();

2.代理模式

在这里插入图片描述

interface ICalc{
	calc(num1,num2):number;
}

class Npc1 implements ICalc{
	calc(num1,num2){
		return num1+num2;
	}
}
//不同的代理 相同协议不同的作用
class Npc2 implements ICalc{
	calc(num1,num2){
		return num1 - num2;
	}
}

class Person{
	//代理
	delegate:ICalc;//遵循协议就可以成为代理
	//计算数字
	GutNum(num1,num2){
		//拿到num1和2计算后的结果
		let num = this.delegate.calc(num1,num2);
		document.write(num +"");
	}
]

let person = new Person();
//设定一个代理
person.delegate = new Npc1();
person.GetNum(4,3);//输出7
perosn.GetNum(4,3);//输出1

3.观察者模式

在这里插入图片描述

一个对象被其他对象监听,只要该对象改变,就通知所有监听他的对象

interface IObserver{
	nameChanged(newName);
}

class Person{
	private _name:string;
	//所有的观察者,创建一个观察者数组
	observers:Array<IObserver> = new Array<IOberserve>();
	set name(value){
		this._name = value;
		//发生变化
		//遍历观察者数组,给所有观察者发消息
		for(let observe of this.observes){
			observe.nameChanged(this.name);
		}
	}
	get name(){
		return this._name;
	}
}
class Test implements IObserver{
	nameChanged(newName){
		document.write("监听到变化,名称变为"+ newName);
	}
}
let person = new Person();
//设置为监听对象
person.observers.push(test);//把test加入监听数组中
person.name = "hhh";

输出结果:
在这里插入图片描述

4.工厂模式

不用管他内部是怎么工作的,传入对应数据,会传出对应的数据
在这里插入图片描述

enum CarType{
	Bmw,
	Audi,
	Benz
}

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 Bmw extends Car{ }
class Benz extends Car{ }
class Audi extends Car{ }

let bmw = Car.Create(CarType.Benz);

5.链表

数组是连续型的,链表是离散型

class Person{
	name:string;
	next:Person; 

	constructor(name){
		this.name = name;
	}
}
let person = new Person("李逍遥");
person.next = new Person("王小虎");
person.next.next = new Person("赵灵儿");

//删除
person.next = person.next.next;//把李逍遥后变为赵灵儿

//添加
let tmpPerson = new Person("赵四");
person.next = tmpPerson;

while(person){
	document.write(person.name);
	//让节点后移
	person = person.next
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值