这是一本十分经典的关于设计模式的书,以前阅读过这本书,这次重新阅读又增加了新的理解。书本中一些经典案例的讲解,联系到平时工作中的应用,对设计模式有了更加深入的思考。这里给出工作中总结的常用JS设计模式
// bad
// 飞行技能和叫声不是每只鸭子都会的(比如橡皮鸭),所以不能放在鸭子Duck基类中
class Duck {
// common
eat();
sleep();
// special
fly()
quack()
}
Dog d = new Dog() // 针对实现编程
Animal d = new Dog() // 针对接口编程(Dog extend Animal)
// bad
// 飞行和叫声是接口,需要每次都实现,不好
class RedHeadDuck extend Duck interfaces IFly, IQuack {
}
// good
class RedHeadDuck extend Duck {
FlyBehavior fly;
QuackBehavior quack;
}
// n种缓存方式
class LocalStorage extend ICache{}
class ObjectStorage extend ICache{}
...
// 管理类
class CacheManage {
constructor(ICache cache){
this.cache = cache
}
get() {
return this.cache.get()
}
}