设计模式学习笔记(1)——单例模式

  • 单例模式是常用的设计模式之一,作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,特点:
  1. 某个类只能有一个实例,避免重复实例化。
  2. 必须自行创建这个实例,不允许外部实例化,不允许克隆。
  • 举个例子:
<?php
/**
* 设计模式之单例模式
* $_instance必须声明为静态的私有变量
* 构造函数和析构函数必须声明为私有,防止外部程序实例化类。从而失去单例模式的意义
* getInstance()方法必须设置为公有的,必须调用此方法,以返回实例的一个引用
* ::操作符只能访问静态变量和静态函数
* new对象都会消耗内存,使用场景:最常用的地方是数据库连接。使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。 
*/
class Singleton
{
    private static $_instance;

    //阻止用户实例化 实例化抛出Fatal error
    private function __construct(){}

    //阻止用户复制对象实例 抛出Fatal error
    public function __clone()
    {
        throw new Exception("not allow clone this class.");
    }

    //单例方法
    public static function getInstance()
    {
        if(!(self::$_instance instanceof self))
        {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    public function doSomething()
    {
        echo("to do something");
    }
}

//$singleton = new Singleton(); //Fatal error

$singleton = Singleton::getInstance();

$singleton->doSomething();

//$t = clone $singleton;//Fatal error

转载于:https://www.cnblogs.com/stringfade/p/7242409.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值