说到设计模式,大家可能都会想到单例模式,我个人认为单例模式是设计模式中最简单、最容易理解的一种。实现它的途径是把类的构造函数设置为私有方法,并设置一个私有的属性,让一个公有的方法访问这个属性。Singleton模式典型的UML结构图:
下面的代码来源于一个大牛的Blog:http://www.phppan.com/?s=设计模式
<?php /** * 单例模式 2010-06-06 sz * @author phppan.p#gmail.com http://www.phppan.com * 哥学社成员(http://www.blog-brother.com/) * @package design pattern */ /** * 懒汉式单例类 */ class Singleton { /** * 静态成品变量 保存全局实例 */ private static $_instance = NULL; /** * 私有化默认构造方法,保证外界无法直接实例化 */ private function __construct() { } /** * 静态工厂方法,返还此类的唯一实例 */ public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Singleton(); } return self::$_instance; } /** * 防止用户克隆实例 */ public function __clone(){ die('Clone is not allowed.' . E_USER_ERROR); } /** * 测试用方法 */ public function test() { echo 'Singleton Test!'; } } /** * 客户端 */ class Client { /** * Main program. */ public static function main() { $instance = Singleton::getInstance(); $instance->test(); } } Client::main(); ?>