本小节是设计模式的第一篇,相信那些让人眼前一亮的代码,或多或少都会用到设计模式。对于设计模式,个人理解:就是按照一定模式去编码,而这些模式有助于代码松耦合,高复用,更具模块化等优点。

引用百度百科的解释:

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

下面介绍下第一种最常见,也是最容易理解的单例模式。所谓单例模式,就是只会存在一个类的实例,禁止类的外部实例化,可以节约内存的开销。

    单例模式实现原理

为了防止类的外部实例化,需要将构造方法和 clone 方法私有化;提供一个静态的公开的方法让外部调用。下面举一个常见的例子,就是数据库类的封装。

<?php
/**
* 单例模式:封装 DB 实例
*/
class ClassName
{
// 存放类的唯一实例
private static $_instance = NULL;

/**
* 私有的构造方法
*/
private function __construct(argument)
{
# code...
}

/**
* 供外部调用
* @DateTime 2019-05-20
* @return self::$_instance
*/
public static function getInstance()
{
if ( ! (self::$_instance instanceof self) ) {
self::$_instance = new self();
}
return self::$_instance;
}

/**
* 私有的 clone 禁止克隆副本
* @DateTime 2019-05-20
* @return
*/
private function __clone()
{

}

/**
* 私有的反序列化方法 禁止创建副本
* @DateTime 2019-05-20
*/
private function __wakeup()
{

}

}

// 调用
DB::getInstance();

这就是最简单的单例模式的一种实现与应用场景,后面会逐渐讲解几种模式共同使用的场景。学习,应该从浅入深,了解掌握了基本的理论知识,那些看似高深的知识就不再变得那么陌生。

由于能力有限,不足或有不解之处,希望在下方评论区与我讨论,共同提高 。