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

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

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

单例模式使用场景

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

单例模式的实现

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

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

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

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

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

总结

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值