设计模式

  1. 1. 3种基本设计模式
  2. 2. 代理模式
  3. 3. 迭代器模式
  4. 4. 装饰器模式
  5. 5. 观察者模式
  6. 6. 数据对象映射模式
  7. 7. 策略模式
  8. 8. 适配器模式

3种基本设计模式

  1. 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new
  2. 单例模式,使某个类的对象仅允许创建一个
  3. 注册模式,全局共享和交换对象

代理模式

  1. 在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体的具体实现细节
  2. proxy还可以与业务代码分离,部署到另外的服务器。业务代码中通过RPC来委派任务

迭代器模式

  1. 在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
  2. 相比于传统的编程模式,迭代器模式可以隐藏遍历元素的所需的操作

装饰器模式

  1. 可以动态的添加修改类的功能
  2. 一个类提供了一项功能,如果要修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法
  3. 使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性

观察者模式

  1. 当一个对象状态发生改变时,依赖它的对象全部会受到通知,并自动更新
  2. 场景: 一个事件发生后,要执行一连串更新操作。传统的编程方式就是在事件的代码之后直接加入处理逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件主体的代码
  3. 观察者模式实现了低耦合,非侵入的通知和更新机制

数据对象映射模式

  1. 数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作
  2. 在代码中实现数据对象映射操作模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性的操作
  3. 结合使用数据对象映射模式、工厂模式、注册模式

策略模式

  1. 策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
  2. 实际应用举例,假如一个电商网站系统,针对男性女性用户要各自
    跳转到不同的商品类目,并且所有广告位展示不同的广告
  3. 使用策略模式可以实现IOC,依赖倒置、控制反转

适配器模式

  1. 适配器模式,可以将截然不同的函数接口封装成统一的API
  2. 实际应用举例,PHP的数据库操作有mysql,mysqli,pdo,可以用适配器模式统一成一致。类似的场景还有cache适配器,将memcache、redis、file、apc等不同的缓存函数,统一成一致