PHP设计模式之单例模式入门与应用详解

2025-05-27 0 85

本文实例讲述了PHP设计模式单例模式入门与应用。分享给大家供大家参考,具体如下:

单例模式,是一种常用的软件设计模式,在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。通俗来讲就是通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次,来看下这个单例模式的要点:

1.一个类只能有一个对象;

2.必须是自行创建这个类的对象;

3,要想整个系统提供这一个对象;

从具体实现的角度来说,可以按着下面这三点来理解:

一是单例模式的类只提供私有的构造函数,

二是类定义中含有一个该类的静态私有对象,

三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。

最主要的就是还要有一个private的clone方法,防止克隆,得记得哈。

优点如下:

一、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

二、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点如下:

一、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

二、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

三、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

来看下咱写的案例 :

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32
class Test{

static private $instance;

private $age;

private $name;

private function __construct($name,$age)

{

$this->name = $name;

$this->age = $age;

echo "construct".PHP_EOL;

}

private function __clone()

{

// TODO: Implement __clone() method.

}

static public function set_name($name,$age)

{

if (!self::$instance instanceof self) {

self::$instance = new self($name,$age);

}

return self::$instance;

}

public function get_name()

{

echo $this -> name.PHP_EOL;

echo $this -> age.PHP_EOL;

}

}

$object_1 = Test::set_name("cuijinpeng","26");

$object_1->get_name();

echo "<br>";

$object_2 = Test::set_name("luyaran","27");

$object_2->get_name();

运行结果:

construct cuijinpeng 26
cuijinpeng 26

从上述实例中,我们可以看出,$object_1创建对象后,参数是"cuijinpeng","26",但是$object_2并没有创建对象,而是直接使用$instance保存的唯一对象,所以输出的参数并没有变为"luyaran","27"。

好啦,本次记录就到这里了。

希望本文所述对大家PHP程序设计有所帮助。

原文链接:https://blog.csdn.net/luyaran/article/details/82800314

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP设计模式之单例模式入门与应用详解 https://www.kuaiidc.com/71027.html

相关文章

发表评论
暂无评论