首页> 基础笔记 >PHP基础学习 >面向对象 面向对象
PHP面向对象单态(单例)设计模式
作者:小萝卜 2019-09-02 【 PHP 面向对象 】 浏览 1098
简介PHP面向对象单态(单例)设计模式,单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。当一个类的构造方法私有化时,我们不能实例化这个对象,这是我们在类的内部定义一个静态方法来实例化该类,然后我们在类的外部调用 类名::方法名 实现类的实例化。
PHP面向对象单态(单例)设计模式
单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。
当一个类的构造方法私有化时,我们不能实例化这个对象,这是我们在类的内部定义一个静态方法来实例化该类,然后我们在类的外部调用 类名::方法名 实现类的实例化。
满足条件;
1.将构造方法私有化
2.申明一个静态成员属性
3.申明一个静态的成员方法
实例1:
<?php
class DB {
private static $obj = null; //声明一个私有的,静态的成员属性$obj
private function __construct() { //私有构造方法,只能在类的内部实例化对象
echo "连接数据库成功<br>";
}
public static function getInstance() { // 通过此静态方法才能获取本类的对象
if(is_null(self::$obj)) //如果本类中的$obj为空,说明还没有被实例化过
self::$obj = new self(); //实例化本类对象
return self::$obj; //返回本类的对象
}
public function query($sql) { //执行SQL语句完成对数据库的操作
echo $sql;
}
}
$db = DB::getInstance(); //只能使用静态方法getInstance()去获取DB类的对象
$db -> query("select * from user"); //访问对象中的成员
实例2:
<?php
//PHP中单例(单态)设计模式
class Demo{
//定义私有静态属性用于维持住存放当前类的对象。
private static $ob=null;
//构造方法私有化,目的不让在外面new实例化。
private function __construct(){
}
//提供公有的静态方法,来获取当前类的唯一对象
public static function makeOb(){
//判断当前类的对象是否没有实例化
if(self::$ob==null){
//实例化后放到当前类的静态属性中
self::$ob=new Demo();
}
//返回静态属性,即当前类的唯一对象。
return self::$ob;
}
//定义自己类中其他方法和属性
}
$d1 = Demo::makeOb();
$d2 = Demo::makeOb();
var_dump($d1);
var_dump($d2);
很赞哦! (0)
上一篇:PHP面向对象const关键字