php设计模式--单例模式(三)

简介: php设计模式--单例模式(三)

单例模式 只能new一个对象  

1.第一次代码

为防止外界自由的new  自己new自己

2.第二次代码

//加个判断 有就不new可  

//判断只有一个对象  
class Single{
  protected $rnd;
  protected  static $ins = null;
  public function __construct(){
    $this->rnd = mt_rand(0,100);
  }
  public static function getins(){
    if(self::$ins === null){
      self::$ins = new self();
    }
    return self::$ins;
  }
}
$s1 = Single::getIns();
$s2 = Single::getIns();

这样也有问题 被人可以继承过来改为public 也可以克隆

防止克隆有克隆的方法

3.最终代码

private function __clone(){} //禁止克隆

最终代码

<?php
//单例模式
//判断只有一个对象  
 //最终代码
class Single{
  protected $rnd;
  protected  static $ins = null;
  public function __construct(){
    $this->rnd = mt_rand(0,100);
  }
  public static function getins(){
    if(self::$ins === null){
      self::$ins = new self();
    }
    return self::$ins;
  }
  private function __clone(){} //禁止克隆
}
$s1 = Single::getIns();
$s2 = Single::getIns();
//$s3 = clone $s2 ; //clone的时候会报错 不能clone 
print_r($s1);
print_r($s2);
var_dump($s2===$s1);
//var_dump($s3===$s2);

 

目录
相关文章
|
2天前
|
设计模式 安全 Java
【设计模式系列笔记】单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点,以便全局范围内访问这个实例。单例模式的目标是限制一个类的实例化,确保在整个应用程序中只有一个实例存在,并提供对这个唯一实例的全局访问点。这对于控制对资源的访问、限制特定类的实例数量等场景非常有用。
122 5
|
2天前
|
设计模式 算法 PHP
php设计模式--策略模式(六)
php设计模式--策略模式(六)
11 0
|
2天前
|
设计模式 PHP
php设计模式--装饰模式(七)装饰模式完成文章编辑
php设计模式--装饰模式(七)装饰模式完成文章编辑
12 0
|
2天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
2天前
|
设计模式
【设计模式】单例模式的三种实现方式
【设计模式】单例模式的三种实现方式
7 1
|
2天前
|
设计模式 安全 Java
【设计模式学习】单例模式和工厂模式
【设计模式学习】单例模式和工厂模式
|
2天前
|
设计模式 算法 搜索推荐
【PHP开发专栏】PHP设计模式解析与实践
【4月更文挑战第29天】本文介绍了设计模式在PHP开发中的应用,包括创建型(如单例、工厂模式)、结构型和行为型模式(如观察者、策略模式)。通过示例展示了如何在PHP中实现这些模式,强调了它们在提升代码可维护性和可扩展性方面的作用。设计模式是解决常见问题的最佳实践,但在使用时需避免过度设计,根据实际需求选择合适的设计模式。
|
2天前
|
设计模式 安全 Java
|
2天前
|
设计模式 存储 安全
Java 设计模式:深入单例模式的理解与应用
【4月更文挑战第27天】单例模式是一种常用的设计模式,在 Java 开发中扮演着重要角色。此模式的主要目的是保证一个类只有一个实例,并提供一个全局访问点。
21 0
|
2天前
|
设计模式 安全 Java
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式
[设计模式Java实现附plantuml源码~创建型] 确保对象的唯一性~单例模式