ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-单例模式

2021-08-03 23:00:02  阅读:148  来源: 互联网

标签:function text self 模式 实例 单例 php public


php-单例模式

概述

单例模式(Singleton Pattern):确保某一个类只有一个实例且自行实例化并向整个系统提供这个实例,这个类称之为单例类,它提供全局访问的方法。

单例模式的要点有三个:

  1. 单例类必须自行向整个系统提供这个实例。
  2. 单例类只能有一个实例
  3. 单例类的实例必须由自己创建

代码范例

<?php 

class Singleton{
    //用于保存实例
    private static $instance;
    //防止外部创建实例
    private function __construct(){}
    //防止复制实例
    private function __clone(){}
    public $test_text;
    //公有方法,用于获取实例
    public static function getInstance(){
        //判断实例有无创建,没有的话创建实例并返回,有的话直接返回
        if(!(self::$instance instanceof self)){
            self::$instance = new self();
        }
        return self::$instance;
    }
    public function setText(string $text){
        $this->test_text = $text;
    }
    public function getText():string{
        return $this->test_text;
    }
}
class Test{
    public function __construct($text)
    {
        Singleton::getInstance()->setText($text);
    }
    function printText(){
        echo Singleton::getInstance()->getText();
    }
}
$test = new Test(12);
echo $test->printText();
exit();

以上代码结果

模式分析

单例模式的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式包含的角色只有一个,就是单例类——Singleton。单例类拥有一个私有构造函数,私有克隆方法。确保无法通过外部直接实例化/克隆它。另外,单例模式中包含一个静态私有成员变量和静态公有的工厂方法,该工厂方法用于检测实例是否存在并实例化自己。然后存储在静态变量中。以确保只有一个实例被创建。

在实现单例模式的过程中,需要注意以下几点

  1. 单例类的构造函数,克隆函数为私有
  2. 提供一个自身的静态私有成员变量
  3. 提供一个公有的静态工厂方法

标签:function,text,self,模式,实例,单例,php,public
来源: https://blog.csdn.net/hz7523/article/details/119361027

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有