文章目录
前言

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

| class SoundManager{ |
| static instance:SoundManager; |
| |
| 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{} |
复制