您的位置 首页 php

PHP设计模式:(一)、单例模式

一、设计模式概述:

设计模式是什么?初学者一开始会被这高大上的名称给唬住。而对于有丰富编程经验的老鸟来说,模式设计又是无处不在。很多接触的框架就是基于各种模式设计形成的。

简单说,在写代码的过程中一开始往往接触的是 面向过程 的,简单的基础的编程。这个时候我们往往追求的是代码能够实现某项功能就万事大吉。管他代码多么冗余,管他代码是否可重用,管他效率如何,能实现功能就好。但是,真正应用于实际的,更被大家采纳的是那些高效的,可重用的,便于团队开发的代码。基于这些因素,你不能像练手一样,随便命名函数名,随便放置脚本。设计模式告诉是给人们组织代码提供一种思路,实现可重用代码、让代码更容易被他人理解、保证代码可靠性。

二、 单例模式

1、什么是单例模式?

单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行 实例化 并向整个系统提供这个实例。

2、特点:

  1. 一是某个类只能有一个实例;

  2. 二是它必须自行创建这个实例;

  3. 三是它必须自行向整个系统提供这个实例。

3、常见应用

php常常和数据库打交道,如果在应用中如果频繁建立连接对象,进行new操作的话,会消耗大料的系统内存资源,这并不是我们希望看到的。再则,在团队合作项目中,单例模式可以有效避免不同程序员new自己的对象,造成人为的系统消耗。

三、实例

/**

* 设计模式之单例模式

* $_instance必须声明为静态的私有变量

* 构造函数 必须声明为私有,防止外部程序new类从而失去单例模式的意义

* getInstance ()方法必须设置为公有的,必须调用此方法以返回实例的一个引用

* ::操作符只能访问 静态变量 和静态函数

* new对象都会消耗内存

* 使用场景:最常用的地方是数据库连接。

* 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。

*/

class man

{

//保存例实例在此属性中

private static $_instance;

//构造函数声明为private,防止直接创建对象

private function __construct()

{

echo ‘我被实例化了!’;

}

//单例方法

public static function get_instance()

{

var_dump(isset(self::$_instance));

if(!isset(self::$_instance))

{

self::$_instance=new self();

}

return self::$_instance;

}

//阻止用户复制对象实例

private function __clone()

{

trigger_error(‘Clone is not allow’ ,E_USER_ERROR);

}

function test()

{

echo(“test”);

}

}

// 这个写法会出错,因为 构造方法 被声明为private

//$test = new man ;

// 下面将得到 Example 类的单例对象

$test = man::get_instance();

$test = man::get_instance();

$test->test();

// 复制对象将导致一个E_USER_ERROR.

//$test_clone = clone $test;

总结:

本身单例模式并不复杂,但需要深入理解。不管构造方法被申明为public,private还是 protected ,最终创建对象的时候都会调用。一直是new创建对象实例,单例模式也用new创建对象,只是换个地方而已,从类外到类内。

最后愿这篇文章能给帮助!愿老司机勿喷!愿世界和平!如果您觉得还行,就动手点个赞关注我们吧!(ps:后期小编会推出各种实用的干货,如果你喜欢并且能给你带来帮助!快来关注我吧!)

文章来源:智云一二三科技

文章标题:PHP设计模式:(一)、单例模式

文章地址:https://www.zhihuclub.com/154208.shtml

关于作者: 智云科技

热门文章

网站地图