php设计模式(7)单例模式

2017-03-08 17:16:45 admin ...

前言:

说完了工厂模式,按我们的《php设计模式(7)前言》中的规划,这次我们来讨论单例模式。

内容概要:

1、什么是单例模式

2、为什么要使用单例模式

3、什么情况下使用单利模式

4、示例代码

一、什么是单例模式

网上的官方的定义就不抄了,单例模式是常用的一种设计模式,他的核心就是做一个只能有一个实例的类。就是说某一个类,只能实例化一个对象,仅提供一个类函数供外部访问。这个类也叫单例类。

说白了:单例模式就是原先计划生育的一胎政策(类是父母,实例化的对象是独生子女)。

二、为什么要使用单例模式

1、省内存,只有一个实例对象,当然省了啊。

2、灵活,单例类内部实例对象,单例类里修改一下实例化的过程和参数,外部的那些类正常使用,他们根本不知道,当然也没必要知道。

3、就这么一个孩子,不会出现争财产的情况

三、什么情况下使用单例模式

很容易知道,我们某一个类只能有一个实例对象的时候用单例模式。常用的场景是数据库类。其他应用场景是否能使用单例模式,看你的业务需求吧,只要要求独生子女(对象),都是可以使用的。

另外提一点,单例模式和工厂模式是可以结合使用的。

本着不偷懒的精神,献上UML图

四、示例代码

相比较java语言(有七八种写法:懒汉、恶汉、枚举等),php的单例模式比较简单,就一种写法。

屡起袖子,我们一起分析怎么写出一个只能有一个实例(对象)的单例类。

1、我们要创建单例只能有一个对象,那说明不能让别的类来new创建了,不然,就会产生好多实例对象了。so,这个单例类里只能在自己类的内部实例化类。

2、别的类不能new这个类,因此,这个单例类里的构造方法(__construct())不能是共有属性的了,应该使用private属性

3、还有外部类不能new这个单例类,那总的提供方式供外部类使用吧,很自然,单例类中采用静态方法对外提供使用。

4、当然,需要创建一个内部的变量存储对象

ok,估计你应该知道怎么写单例类了吧?那我的献丑写一段给大伙看看。

相似文章