单例模式

单例模式:确保一个类只有一个实例

在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。

特点

  • 只能有一个实例。
  • 必须自行创建这个实例。
  • 必须给其他对象提供这一实例。

为什么要使用PHP单例模式

PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

使用场景: 缓存、日志对象、数据库操作只有一个实例

缺点
1. 难于调试
2. 隐藏的依赖关系

工厂模式

减少new的使用,定义一个类,专门用来创建其它对象

优点
使用工厂模式,可以避免当改变某个类的名字或者方法之后,在调用这个类的所有的代码中都修改它的名字或者参数。

原型模式

原型模式(对象克隆以避免创建对象时的消耗)
1:与工厂模式类似,都是用来创建对象。
2:与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。这样就免去了类创建时重复的初始化操作。
3:原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需要内存拷贝即可。

策略模式

把特定行为封装成类,适应特定的环境

使用场景: 电商男装女装

假如有一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有的广告位展示不同的广告。在传统的代码中,都是在系统中加入各种if else的判断,硬编码的方式。如果有一天增加了一种用户,就需要改写代码。使用策略模式,如果新增加一种用户类型,只需要增加一种策略就可以。其他所有的地方只需要使用不同的策略就可以。

注册模式

注册模式,解决全局共享和交换对象。

已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。

观察者模式

当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新

观察者模式实现了低耦合,非侵入式的通知与更新机制。

使用场景: 事件系统

缺点: 性能降低

适配器模式

把各种不同的类封装成同一接口

使用场景:数据库mysql,mysqli。缓存memcache,redis,file。可以用适配器模式统一成一致

装饰器模式

可以动态的添加修改类的功能

一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重写实现类的方法

使用装饰器模式,仅需要在运行时添加一个装饰器对象即可实现,可以实现最大额灵活性。


REFERENCE

分类: 后端

发表评论

电子邮件地址不会被公开。 必填项已用*标注