首页 > 编程 > PHP > 正文

PHP面向对象编程设计模式(二)单例模式

2019-11-06 07:11:00
字体:
来源:转载
供稿:网友

  在php编程中,单例模式虽然不是最常用,但一定是最不可缺少、应用非常广泛的一种设计模式,虽然你可能不太了解它,但只要你有过开发一个完成系统的经历,相信我,你一定使用过它。

介绍

单例模式(Singleton Pattern),也被成为单件模式,确保某个类只能有一个正在运行的实例,而且自行实例化并且向系统提供这个实例。有且只有一个 是单例模式最重要的特点。

特点

1.只能有一个实例。

2.必须自行创建这个实例。

3.必须给其他对象提供这一实例。

场景

比如在应用中需要一个日志记录对象,并且需要在整个系统中只使用这一个对象,这时候就需要单例模式。另外一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

实现方式

  实现一个静态的类方法getInstance(),这个方法只返回该类的唯一实例,当第一次调用这个方法的时候,它创建一个实例,吧它存在一个私有的静态变量之中,并且返回该实例,下一次,他只返回已经创建的实例。

例子

一个日志记录类。

<?php/*** 日志记录类*/class Logger{ //私有化静态变量 static PRivate $instance = NULL; // 私有构造函数,防止实例化对象 private function __construct() { # code... } // 私有克隆函数 private function __clone(){ } // 静态方法,统一访问入口 static public function getInstance(){ if(self::$instance == NULL){ self::$instance = new Logger(); } return self::$instance; } static function Log($str) { }}?>

   一般要使一个程序中只有一个实例时,会使用全局变量,但不同于面向过程,面向对象的程序设计中应当尽量避免全局变量的出现,所以使用单例模式是一个很好的选择。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表