PHP 对象 单态(单例,单件)设计模式 static

<?php
header(‘content-type:text/html;charset=utf-8‘);
/*
 *单态设计模式 单例  单件
 *一个类只能创建一个对象 
 *1.如果想让一个类,只能有一个对象,就要先让这个类不能创建对象,将构造方法private
 *2.可以在类的内部使用一个静态方法来创建对象
 */

    class Persion{
        //使用静态成员实现单态设计
        static $obj = null;
        private function __construct(){
            
        }
        static function getObj(){
            //如果第一次调用时没有对象,则创建,以后调用时,直接使用第一次创建的对象
            if(is_null(self::$obj))
            self::$obj = new self;//self就代表类名自己
            return self::$obj;
        }
        function say(){
            echo ‘我是中国人‘;
        }
        
        function __destruct(){
            echo ‘析构方法释放资源<br/>‘;
        }
    }
    $p = Persion::getObj();
    $p = Persion::getObj();
    $p ->say();
时间: 2024-07-29 15:10:37

PHP 对象 单态(单例,单件)设计模式 static的相关文章

单态(单例)设计模式

一.单态(单例) 他不会有新的语法参与 只是一种新的设计方法和思路而已 二.单态到底是什么 最终结果就是想要你的类只得到一个对象 不能让用户在外面new---------------> 封装构造方法 我们一个对象都得不到--------------> 提供一个方法 普通的方法外部无法访问-----------> 使用static修饰 方法中我们可以加判断 ------------> 添加一个属性 普通属性无法再静态中使用-------> 这个属性也用静态修饰 魔术方法 __c

单例的设计模式代码演示

1.饿汉式 1 package com.wisezone.singleton02; 2 /** 3 * java中有23种对象设计模式 4 * 单例设计模式:解决一个类中只存在一个对象 5 * @author 王东海 6 * @date. 2016年8月30日 7 * @version v1.0 8 */ 9 //饿汉式:先初始化对象. 10 public class Singleton 11 { 12 //private的构造器,不能在类的外部创建该类的对象 13 private Single

设计一个不强引用对象的单例字典

大家都知道,使用NSDictionary存储对象的时候会强引用对象,导致被存储对象的引用计数+1,有时候,我们想用单例来存储对象,但又不希望强引用存储的对象,这该怎么实现呢? 在这里,我们可以使用NSMapTable来实现这个功能. 我直接给出源码: WeakDictionary.h   +   WeakDictionary.m // // WeakDictionary.h // 弱引用字典 // // http://www.cnblogs.com/YouXianMing/ // Copyrig

C++单例类设计模式的思考

本次博文假设有一个Manager管理类,并以此为探究单例类的设计模式. 一般作法 类声明: class Manager{ public: ~Manager(); //提供单例对象访问 static Manager* getInstance(); //删除单例对象 void deleteInstance(); void dosometing(); private: //构造函数声明为 保护方法 Manager(); //单例对象指针 static Manager* s_Manager; }; 类方

webx 中request 对象作为单例注入的实现

webx 文档中描述: 你不能把一个短期的对象如request.response和request context注入到MyAction这个singleton对象.然而,在Webx中,这样做是可以的!奥秘在于Request Contexts服务对上表所列的这些短期对象作了特殊的处理,使它们可以被注入到singleton对象中.事实上,被注入的只是一个"空壳",真正的对象是在被访问到的时候才会从线程中取得的.http://openwebx.org/docs/filter.html 例1.

java使用单例与使用static方法的对于和个人理解

最近在重构项目中的老模块,打算引入spring boot对原有项目自己封装的依赖注入模块进行替换.项目中存在大量的工具类,大都是使用static方法编写的,比如时间工具类用于格式化日期,编码工具类用于编码解码.研究了下是否有必要对这些常量方法的类进行单例重构. 首先要说明的是,两种方式都是可以实现功能的,只在一些特殊的场景会有些区别.除非比较感兴趣,一般是没必要太深究 区别和特点: 单例:有实例,有状态 静态方法:无实例,无状态,纯函数 静态方法实现方式的优点是突出了一个简单粗暴,不实例对象,并

IOS单例的设计模式

static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化置为nil. @implementation SurveyRunTimeData + (SurveyRunTimeData*) sharedInstance    //第二步:实例构造检查静态实例是否为nil. { @synchronized (self)     { if (sharedObj == nil) { [[self alloc] init]; } } return s

iOS 中的单例设计模式

单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单例在那个文件下都能取得到. 通过单例设计模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节省系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的选择. 下面来点实在的,创建单例代码上 方法1:基于线程安全创建一个单例 .h做一下声明 + (id)

OC中的单例设计模式及单例的宏抽取

1 // 在一个对象需要重复使用,并且很频繁时,可以对对象使用单例设计模式 2 // 单例的设计其实就是多alloc内部的allocWithZone下手,重写该方法 3 4 #pragma Person.h文件 5 6 #import <Foundation/Foundation.h> 7 @interface Person : NSObject <NSCopying,NSMutableCopying> 8 + (instancetype)sharePerson; // 给类提供一