策略模式
- 把具体的行为从对象中抽取出来,封装成接口,方便动态配置对象的行为
- 各种web框架的log driver , session driver , storage driver 好像都使用了类似的设计思路
观察者模式
- 实现观察对象和被观察对象的解耦
- web前端开发中大量使用了这种思想
装饰模式
- 使用一个新对象对目标对象进行包裹,从而在不修改目标对象的情况下,可以动态的修改目标对象的行为
- 这个思想对于一些动态脚本语言来说是透明的(很多语言也提供了诸如 hook,proxy,watcher等机制来修改目标对象的行为)
单例模式
- 受到物理世界和业务逻辑的限制,程序中的某些对象只能允许存在一个实例
- 对于大多数编程语言来说实现单例模式很简单,不过在面向对象的语言中要获得一个单例需要一点小技巧(比如避免使用new 关键字获得单例)
迭代器模式
- 在需要顺序依次访问集合的时候,使用迭代器接口进行抽象,隐藏各种集合内部的实现细节
- 迭代器模式其实已经融入了很多语言的语法中
工厂模式
- 把创建对象的操作(一般指的是new操作)进行封装,主要是在new操作的时候涉及到了类名称,还有一些参数,容易散落在程序的各个地方
- 工厂方法可以作为函数的参数来传递,比直接使用new关键字创建对象更灵活