常用的设计模式总结

策略模式

作用

  • 将一组特定行为的算法封装成类,以适应不同的上下文环境,避免了if-else这样的的硬编码

使用场景

  • 电商网站,不同的用户显示不同的广告,传统方式使用if-else

代理(proxy)模式

作用

  • 可以实现业务和代码的分离。

适用场景

  • 典型的使用场景是数据库的主从库的读取和写入操作
  • 可以讲这些操作封装到一个proxy类中,避免选择主从的代码业务代码中出现

观察者模式

作用

  • 当一个对象发生改变时,依赖他的对象全部会接收到通知,并自动更新。

使用场景

  • 当一个事件发生后,后面要执行一系列更新操作
  • 传统的方式直接加入逻辑处理,(耦合,侵入式)

适配器模式

作用

  • 将不同的函数接口封装成统一的的API

使用场景

  • 数据库操作 mysql,mysqli,pdo
  • cache mc,redis,file,apc

原型模式

作用

  • 创建对象
  • 避免了对象初始化时的系统消耗

适用场景

  • 创建一个大对象,需要初始化很多内容的时候

装饰器模式

作用

  • 动态的添加或修改类的功能

适用场景

  • 传统方式是使用继承来重写功能
  • 使用装饰器模式只需要在运行的时候添加一个装饰器对象即可
  • 极大的提高了灵活性

单例和工厂模式

单例模式

  • 需私有化构造方法
  • 作用:保存对象,避免对象被重复创建
  • 使用场景:创建一个数据库连接对象

工厂模式

  • 作用:专门的工厂类生成对象,对象可同时用单例模式生成
  • 使用场景:多肽对象的生成

后记

一个实例集合,里面包含比较详细的实现: design-patterns-summary

标签: patterns

已有 3 条评论

  1. CBA

    最最最最最常用的Singleton Pattern 拿去了????????

    1. 单例和工厂模式没写是因为它们太太太太常见了,已经超出常见的范畴了...开玩笑的,晚上回去补上.

      不过在demo里也是有所体现的.

  2. Excellent read, I just passed this onto a friend who was doing a little research about this topic!

添加新评论