首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

PHP面向对象单态(单例)设计模式

作者:小萝卜 2019-09-02 浏览 830

简介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)

文章评论

    高端网站建设