适配器模式
- 可以将截然不同的函数接口封装成统一的API
- 实际应用举例,PHP的数据库操作有mysql,mysqli,pdo 3种,可以用适配器模式统一成一致。类似的场景还有cache适配器,将memachche, redis,file,apc等不同的缓存函数,统一成一致
策略模式
- 将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式
- 应用举例 加入一个电商网站系统,针对男女用户要求跳转到不同的商品类目,并且所有广告位展示不同的广告(分支逻辑)
数据对象映射模式
- 数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作
- 在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的sql语句映射成对象属性的操作
- 结合使用数据对象模式,工厂模式,注册模式
观察者模式
- 观察者模式(observer): 当一个对象状态发生改变时,依赖他的对象会全部收到通知并且自动更新
- 场景:一个事件发生后,要执行一连串更新操作,传统的编程方式就是在事件的代码后面加入处理逻辑,当更新的逻辑增加后代码会变得难以维护,这种方式是耦合的 侵入式的 增加新的逻辑需要修改事件主题的代码
- 观察者模式实现了低耦合,非侵入的通知和更新机制
原型模式
- 与工厂模式类似,都是用来创建对象
- 与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象,这样就免去了类创建时重复的初始化操作
- 原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型迷失仅需内存拷贝即可
装饰器模式
- 可以动态的添加修改类的功能
- 一个类提供了一项功能,如果要在修改并添加额外的功能传统的编程模式需要写一个子类继承他,并且重新实现累的方法
- 使用装饰器模式仅需要在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性
迭代器模式
- 迭代器模式在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
- 相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作
代理模式
- 在客户端与实体之前建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节
- Proxy 还可以与业务代码分离,部署到另外的服务器。业务代码 中通过PRC来委派任务