序、设计模式分类
一、装饰者模式(原型链)
二、策略模式
三、代理模式
四、发布订阅模式
五、迭代器模式
六、工厂模式
七、外观模式
八、状态模式
九、单例模式
十、适配器模式
一、概述
一个对象有状态变化,每一个状态变化都会触发一个逻辑,我们不能总是if…else 来写,所以我们就把状态和当前对象分离开来,比如最常见都红绿灯。红灯状态下是(停下),黄灯状态是(警告),绿灯状态是(通行)。那么我们就可以把这3个状态和方法都抽离出来。提高代码复用,符合开放封闭原则
class RedLamp {
constructor() {
this.state = '红灯';
console.log('我是红灯');
}
handle() {console.log('红灯停');}
}
class GreenLamp {
constructor() {
this.state = '红灯';
}
handle(){
console.log('绿灯行')
}
}
class YelloLamo {
constructor() {
this.state = '黄灯'
}
handle(){
console.log('黄灯警告')
}
}
class Content {
constructor() {
this.state = null;
console.log('我是实体');
}
handleState(lamp) {
this.state = lamps.state;
lamp.handle();
}
}
let con = new Content();
let red= new RedLamp();
let green = new GreenLamp();
let yellow = new YelloLamo();
con.handleState(red);
con.handleState(green);
状态模式
- 优势:符合开放封闭原则,提搞代码可以维护性
- 劣势: 添加了很多类,每个类都有自己的方法和状态,增加系统的负载