命令模式
命令模式
主要目的是让请求者和响应者解耦,并集中管理
代码实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888 ...
责任链模式
责任链模式
使多个对象都要机会处理请求,从而避免了请求发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止
场景: 传统的ifelse或switch 处理动态数据的时候处于强耦合
责任链模式是一对一的。一个对象处理不了就会传递给下一个接受者
代码实现1234567891011121314151617181920212223242526272829303 ...
策略模式
策略模式
定义一组算法、将每个算法都封装,并且使它们之间可以互换
用于替换 多个ifelse 或 switch
代码实现12345678910111213141516171819202122232425262728293031class Location { position: string constructor(position: string){ ...
状态模式
状态模式
它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换
例如 抽奖活动有很多的状态和对应的行为
在 getter setter 直接进行转发到合适的行为代码实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 ...
观察者模式
观察者模式
定义对象间一种一对多的依赖关系,当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新
场景: vue的响应式
代码实现123456789101112131415161718192021222324252627282930class Observer { states: string[] = [] update(state: string) { ...
模板方法模式
模板方法模式
定义一个操作中的算法框架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455abstract class AbstractClass & ...
享元模式
享元模式
避免重新创建对象,其实只要有缓存对象的意思,并且共用一个对象实例,就是享元模式
代码实现1234567891011121314151617181920class Car { name!: string color!: string changeColor(color: string) { this.color = color } chang ...