`
coreoak
  • 浏览: 65279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP实现JAVA单线程模式

阅读更多
通常来说,类和对象(类的实例)之间是一对多的关系。但是某些情况下,我们只
需要一个类的一个实例。比如多个实例的多样性反倒会带来一些不可控因素,多
次的实例化,是一种资源的浪费,降低了效率;又如他们是工厂对象(factory
object),用来创建系统中的其他对象,等等。这时候,较好的处理方式就是让类
的实例具有单一性:保障这个类在运行过程中最多生成一个实例( Singleton 模
式),或者让所有的实例保持一致( Monostate 模式)。

PHP 下实现 Singleton 模式示例:
<?php
  class Singleton
  {
      private static $instance;
 
      private function __construct()
      {
      }
 
      public static function instance()
      {
          if(self::$instance == null)
          {
              self::$instance = new Singleton();
          }
 
          return self::$instance;
      }
  }
  ?>


创建 singleton 类实例就只能够是这样了:
$instance = Singleton::instance();

  // 这样是错误的:
$instance = new Singleton();

详细分析一下 PHP 下实现的 singleton 模式的特征:
1. 一个 static, private 属性:用来保存一个实例,static 保证类不被实例化也能够被类方法调用, private 保证它不被类的实例等改变。
2. 一个 private 的构造方法:不允许该类在本类之外的地方实例化。
3. 一个 static, public 方法:负责创建实例并保证其唯一性。static 使该方法可以不被实例化即可被调用。
分享到:
评论

相关推荐

    程序实践三 单线程 多线程

    在编程领域,单线程和多线程是两种基本的执行模式,它们直接影响着程序的性能和并发能力。本文将详细探讨"程序实践三"中关于单线程和多线程的知识点,以及如何在实际操作中应用这些概念。 首先,让我们理解单线程。...

    Java单例模式应用研究.pdf

    双重检查单例模式是对饿汉式单例模式的改进,它可以解决饿汉式单例模式的缺陷,例如线程安全问题。 在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。Java的Struts、...

    设计模式-7种开发语言(C#、JAVA、JavaScript、C++、Python、Go、PHP).pdf

    在标题提及的《设计模式-7种开发语言(C#、JAVA、JavaScript、C++、Python、Go、PHP)》中,作者林晨一点详细介绍了24种经典的设计模式,并提供了这七种主流编程语言的代码示例。以下将对其中一些关键的设计模式进行...

    Java及PHP设计开发资料整理

    - **MVC模式**:理解Model-View-Controller架构,如何在PHP项目中实现这一设计模式。 - **PHP与MySQL交互**:使用PDO或mysqli扩展进行数据库操作,包括连接、查询、插入、更新、删除等操作。 - **PHP面向对象**:...

    Java调用R语言的方法

    JRI是一种允许Java程序通过单线程方式与R进行交互的工具。它能够将R的动态库加载到Java环境中,并提供一系列Java API来实现R的功能。JRI支持简单的R函数调用及完整的交互式执行模式(REPL)。 **官方网站:** - ...

    Easy-Reactor是一个Linux C++高性能TCP服务框架,基于Reactor模式,支持单线程、多线程.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    java多线程源码-SmartSocket:SmartSocket是可扩展的开源Java和PHP套接字服务器引擎。其目的是使创建多用户应用程序

    7. **设计模式**:SmartSocket在实现中可能应用了各种设计模式,如工厂模式用于创建线程,单例模式确保服务器对象的唯一性,装饰者模式用于动态添加功能,观察者模式用于事件驱动的通信等。 通过对SmartSocket的...

    java复习资料2,java复习资料2

    论坛系统,它是一个基于PHP和MySQL构建的开源社区论坛软件,但在这里,它可能是Java相关的一个项目或者教程。 Java的学习涵盖了众多主题,包括但不限于以下几个方面: 1. **基础语法**:Java的基础包括数据类型...

    Java进阶路线

    - **StringBuffer/StringBuilder**:可变的字符序列,StringBuilder 在单线程环境中比 StringBuffer 性能更好。 #### 四、泛型 泛型允许你编写类型安全的通用代码。理解泛型接口和方法、类型擦除、协变、逆变等...

    PHP多线程类及用法实例

    在传统的PHP运行模式下,通常是单线程执行的,但是通过某些方式可以模拟出多线程的效果。这个类通过执行并行任务,使得看似是在多线程环境下运行,实际上是在单一线程内进行时间上的切割,来达到并行的效果。 本篇...

    php-5.4.45-nts.zip(phpstudy 2016+ZendLoader)

    然而,非线程安全版本的PHP则不作此保证,它主要用于单进程、单线程的环境,如Apache的mod_php模块。PHPStudy 2016默认使用的是非线程安全版本,因为大部分用户使用的是Apache服务器,而非Windows系统中的FastCGI...

    PHP实现单例模式最安全的做法

    虽然PHP中的单例模式没有Java那样的线程安全问题(因为PHP是单线程的),但是单例模式仍然有一些潜在的问题。首先,单例模式可能导致代码难以测试,因为它通常涉及全局状态,这使得单元测试变得复杂。其次,单例模式...

    java程序员等级图

    开发者需要熟悉Web技术(如HTML、CSS、JavaScript)、服务器端语言(如Java、Python、PHP)、数据库管理和应用程序接口的设计与实现。 "java程序员等级图"具体列出了Java开发者从入门到精通的技能进阶路线,包括...

    java学习笔记整理

    在Java中,多态可以通过方法覆盖(overriding)和方法重载(overloading)实现。 - **方法覆盖**: 子类中定义的方法与父类中的方法具有相同的名称、参数列表和返回类型,但行为可能不同。 - **方法重载**: 在同一个类中...

    PHP 异步执行方法,模拟多线程的应用分析

    在PHP中,可以通过`pcntl`扩展来实现多进程,或者在命令行模式下使用系统级别的多进程功能(如使用`exec`调用外部程序)。这种方式使得可以同时运行多个PHP脚本,每个脚本都可以独立于其他脚本运行。例如,当需要...

    中软面试题,我感觉很有用

    * 如何实现 servlet 的单线程模式 * servlet 的配置 五、EJB * EJB 容器提供的服务 * EJB 的角色和三个对象:Remote(Local)接口、Home(LocalHome)接口、Bean 类 * EJB 的几种类型:会话(Session)Bean、实体...

    php中foreach结合curl实现多线程的方法分析

    尽管这种方式在某些情况下可以提高效率,但它仍然受限于PHP的单线程执行模型,无法达到像Java、Python等支持多线程的语言那样的并发性能。对于大规模的并发请求,可以考虑使用其他技术,如`pthreads`(PHP的一个扩展...

Global site tag (gtag.js) - Google Analytics