【辫儿哥大白话】到底什么是PHP设计模式?[基础篇] —— 单例模式

本文适合对PHP语言有基本基础的童鞋食用,配合框架研究,基础实践效果更佳~
个人整理,心得体会,欢迎讨论指导.

这学PHP语言学到已经程度,是不是已经受够了基础的原生开发瞎乱写,模块随意乱丢的情况啊?有些有强迫症的童鞋肯定忍不住!那有没有一套规则来使这些杂乱无章的调用变得井井有条呢?来来来,一起研究一下奥。
在这里插入图片描述

单例模式使用场景

想想一下这样的画面,你现在需要 修十个水龙头 ,按照现在的程序流程走的话,每一次修理一个水龙头的时候都需要请一个单独的 水管师傅 去完成这件事,这明显是 极其LowB 极度浪费资源的一种情况,其实其中的师傅就相当于你的对Model类的调用。明明 一个师傅 就可以解决的问题 ,为什么要重复生成多次的实例呢?利用单例模式就可以解决这个问题。

单例模式的实现

拿数据库连接类为例,首先我们声明一个构造方法 __contruct 用来处理Model
在这里插入图片描述
这样做是为了禁止使用new去创建实例,从而屏蔽了在其他地方使用数据库连接操作。

$db = new Database(); //无法正常使用创建实例

之后我们创建 getInstance() 函数去创建其实例,同时定义一个私有变量,判断用于存储这个实例并记录,假如已经存在实例,则不再重新创建,直接返回。
在这里插入图片描述
经过这样处理的话,我们再次在前台进行反复实例化时:

$db = Database::getInstance(); // 新建实例
$db = Database::getInstance(); // 调用之前创建的实例,不再重新创建
$db = Database::getInstance(); // 调用之前创建的实例,不再重新创建

即可实现单例模式的操作。同时结合我们之前提过的 【工厂模式】 即可将两种模式融合使用,从而解决资源浪费的问题:
在这里插入图片描述

总结

单例模式实际上是用于解决资源上浪费的问题。
无论调用多少次,都只会创建一个所对应的实例,就像上面的数据库类,创建数据库连接时若采用了单例设计模式,那么无论调用多少次,都只会创建一个到数据库的连接。

原创文章 9 获赞 5 访问量 685

猜你喜欢

转载自blog.csdn.net/smilekzero/article/details/104016720