PHP 中实现 Singleton 模式和 Monostate 模式

http://www.phpweblog.net/young40/archive/2007/11/21/2365.html

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

PHP 下实现 Singleton 模式示例:

 

<?php
  class Singleton
  {
      private static $instance;
 
      private function __construct()
      {
      }
 
      public static function instance()
      {
          if

时间: 2024-10-27 18:31:42

PHP 中实现 Singleton 模式和 Monostate 模式的相关文章

Monostate模式

请注意这两个模式的区别,在于一个关注行为,而另一个关注结构.Singleton模式强调结构上的单一性.它防止创建多个对象实例.相反,Monostate模式则强制行为上的单一性,而没有加强结构方面的限制.为了强调这个区别,请考虑如下事实:Monostate的测试用例对Singleton类是有效的,但是Singleton的测试用例对却远不适用于Monostate类. Monostate模式的好处在于:透明性:使用Monstate对象和使用常规(regular)对象没有什么区别.使用者不需要知道对象是

.NET中的设计模式二:单件模式

设计 单件模式(Singleton)是一个非常简单的模式,这是我第一个理解并且能运用的模式.有时候模式的复杂程度并不在于本身,而是由于他的应用目的.最初的时候面对一个模式经常充满了困惑,一个简单的调用为什么要搞的如此复杂?为什么要建立这么多类,只是为了打开一个文件. 通常说来学习一个模式是一个接受.认可.领会的过程.接受:了解模式的结构,了解实例的意义:认可:认可该模式在实际工程中的作用和可行性:领会:将模式应用到开发过程中. 而模式的应用目的说到底无非是为了降低模块之间在时间和空间上的耦合程度

ODBC中的同步与异步执行模式

1.引言 近年来,随着计算机局域网技术的不断发展,计算机体系结构已经发展到复杂而开放的客户机/服务器模式.对于客户机/服务器应用的开发,现在常用的前端开发工具有:VisualBasic.Delphi.PowerBuilder等.它们可通过ODBC接口访问服务器的SQLServer数据库服务器. VisualBasic.Delphi.PowerBuilder等开发工具在使用ODBC2.0来编写程序时,通常会提供三种方法来进行数据库应用程序的方案设计: ·使用数据控制项 ·使用数据库对象变量进行编程

在整个应用程序中锁定 android 方向为横向模式

问题描述 在整个应用程序中锁定 android 方向为横向模式 如何在整个应用程序中锁定 android 方向为横向模式? <activity android:screenOrientation=""landscape"" android:name="".BasicLayoutCheckActivity"" /> 这段代码不能运行,如果使用另外一个 activity,就变成纵向模式. 解决方案 在 Manifest

.NET中的设计模式四:命令模式

设计 命令模式(Command)结构并不复杂,简单的说,就是将某些职责封装成对象,对象的激发者(Invoker)和接收者(Reciever)都不过问命令的执行过程.用这样的方式解除了激发者和接受者之间的耦合,为程序提供了更清晰的层次结构.实际运用中经常是将系统中的命令抽象成一个接口,所有的命令都是这个接口的实现,如下所示: Command类是ICommand的实现,Command类实现了execute方法,其他命令类都是Command方法的子类.这样激发者接受者和接受者面临的环境就非常简单了:统

惠普笔记本在EFI BIOS中设置硬盘IDE/AHCI工作模式的方法

  惠普笔记本在EFI BIOS中设置硬盘IDE/AHCI工作模式的方法          1.开机后连续按F10或者ESC键后按F10进入BIOS,左右移动或用鼠标点击System Configurations; 2.在System Configurations下选择Device Configurations; 3.根据需要选择对应的硬盘工作模式IDE或者AHCI,最后按F10保存并退出即可. 以上便是关于惠普笔记本在EFI BIOS中设置硬盘IDE/AHCI工作模式的方法的具体介绍

在Word2007中使用Insert键控制改写模式

  Word2007新增的"插入模式"的功能允许用户使用Insert键控制改写模式.当"插入模式"启用时,用户可以使用Insert键切换插入或改写状态.如果处于改写状态,则用户可以将光标所在处的文本直接改写为其他文本.在使用此功能之前,用户必须首先将其启用,操作步骤如下所述: 第1步,运行Word2007,单击Word2007窗口左上角的Office按钮,单击"Word选项"按钮,如图2007112301所示. 图2007112301 单击&qu

Linux 系统的单用户模式、修复模式、跨控制台登录在系统修复中的运用

摘要:本文主要讲述在系统修复时,登录系统的几种方法;比如当我们把root密码忘记,或者系统正常启动遇到困难时,我们可以通过单用户模式,修复模式linux rescue及跨越控制台登录等方法完成对文件系统的加载,登录,进而进行相应的修复; 当系统被破坏,或者登录遇到困难时,我们如何才能进入系统?比如我们把root密码忘记,或者系统不能正常进行启动时,我们首先想到的是如何登录系统,或如何备份文件系统中重要的数据;下面有以下几种方法供大家参考 目录索引 一.单用户模式: 1.以grub 系统引导管理器

STM32中GPIO的8种工作模式

一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻.         推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小.效率高.输出既可以向负载灌电流,也可以从负载抽取电流.推拉式