PHP常用设计模式之单例模式
作者:bea
模式就像是OOP开发人员的配方,每种模式都提供了所需的成分。我们可以自定义模式的元素来解决特定的编程问题。单例模式就是PHP常用到的设计模式之一。 在OOP中,一个对象之负责一个特定的任务通常是一种很好的做法。例如,你也许希望只让一个对象去访问数据库。单例模式被认为是职责模式,这是因为它将创建对象的控制委托到一个单一的访问点上。在任何时候,应用程序中都只会有这个类仅有的一个实例存在。 多有的单例类至少拥有以下三种公共元素: 1、它们必须拥有一个构造函数,并且该构造函数必须使
模式就像是OOP开发人员的配方,每种模式都提供了所需的成分。我们可以自定义模式的元素来解决特定的编程问题。单例模式就是PHP常用到的设计模式之一。
在OOP中,一个对象之负责一个特定的任务通常是一种很好的做法。例如,你也许希望只让一个对象去访问数据库。单例模式被认为是职责模式,这是因为它将创建对象的控制委托到一个单一的访问点上。在任何时候,应用程序中都只会有这个类仅有的一个实例存在。
多有的单例类至少拥有以下三种公共元素:
1、它们必须拥有一个构造函数,并且该构造函数必须使受保护的。即有关键字private关键字修饰。
2、它们拥有一个保存类的实例的静态成员变量。强调是静态的成员变量。
3、它们拥有一个访问这个实例的公共的静态方法。
下面举一个单例模式的例子:
class Person{
private $name;
static $instance; //保存Person类的实例
private function __construct($name){ //必须有private修饰
$this->name=$name;
}
private __clone(); //防止对象被复制或克隆
public static function getInstance(){
if(!(self::$instance instanceof self)){
self::$instance = new self(); //实例化Person对象
}
return self::$instance; //返回该对象
}
public function run(){
echo $this->name."正在跑步";
}
}
现在,你已经看到了如何申明一个单例类,但是该如何使用它呢?
请看如下的代码:
$person = Person::getInstance();
$person->run();
通过调用getInstance()方法,$instance现在存有内部存储实例的引用。 有用 | 无用
在OOP中,一个对象之负责一个特定的任务通常是一种很好的做法。例如,你也许希望只让一个对象去访问数据库。单例模式被认为是职责模式,这是因为它将创建对象的控制委托到一个单一的访问点上。在任何时候,应用程序中都只会有这个类仅有的一个实例存在。
多有的单例类至少拥有以下三种公共元素:
1、它们必须拥有一个构造函数,并且该构造函数必须使受保护的。即有关键字private关键字修饰。
2、它们拥有一个保存类的实例的静态成员变量。强调是静态的成员变量。
3、它们拥有一个访问这个实例的公共的静态方法。
下面举一个单例模式的例子:
class Person{
private $name;
static $instance; //保存Person类的实例
private function __construct($name){ //必须有private修饰
$this->name=$name;
}
private __clone(); //防止对象被复制或克隆
public static function getInstance(){
if(!(self::$instance instanceof self)){
self::$instance = new self(); //实例化Person对象
}
return self::$instance; //返回该对象
}
public function run(){
echo $this->name."正在跑步";
}
}
现在,你已经看到了如何申明一个单例类,但是该如何使用它呢?
请看如下的代码:
$person = Person::getInstance();
$person->run();
通过调用getInstance()方法,$instance现在存有内部存储实例的引用。 有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- PHP中如何设置session过期
- PHP模板引擎Smarty的工作原理
- smarty的安装、配置和使用实例
- 给大家介绍几个PHP模板引擎
- 强烈推荐一个PHP写的验证码类
- 配置.htaccess文件实现URL地址重写
- 建立友好于搜索引擎的URL地址
- PHP将sql文件导入到phpmyadmin
- 分享一个PHP写的分页类
- PHP连接mysql数据库的二种方法
- PHP数组合并函数array_merge
- php会话控制cookie的应用
- PHP学习:遍历数组的几种方法
- PHP查询指定字符在字符串出现的次数
- 优化PHP程序效率的一些细节
- 推荐几本好的PHP书籍
- 向大家推荐几款好用的php开发工具
- PHP中异常处理机制介绍
- PHP编码规范之注释规范