7.7.4 单态(单例、单件)设计模式

7.7.4 单态(单例、单件)设计模式

单态模式的主要作用是保证在面向对象编程设计中,一个类只能有一个实例对象存在。

<?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");   //访问对象中的成员

test.php

<?php
/* 
 * 单态(单例, 单件)设计模式 -- 最适合PHP使用这个设计模式
 *
 *
 *   1. 如果想让一个类, 只能有一个对象, 就要先让这个类, 不能创建对象 , 将构造方法 private
 *
 *   2. 可以在类的内存使用一个表态方法,来创建对象
 *
 *
 */
    class Person {

        static $obj = null; 

        private function __construct() {
            
        }

        static function getObj() {

            //如果第一次调用时, 没有对象则创建, 以后调用时, 直接使用第一次创建的对象
            if(is_null(self::$obj))
                self::$obj = new self;

            return self::$obj;
        }


        function __destruct() {
        
            echo "################<br>";
        }

        function say() {
            echo "aaaaaaaaaaaaaaaaa<br>";
        }
    }

    
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();
    $p = Person::getObj();

    $p -> say();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • PHP 学习目录 ├─PHP视频教程 1 LAMP网站构建 │ ├─PHP教程 1.1.1 新版视频形式介绍│ ...
    曹渊说创业阅读 16,186评论 29 417
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 目录 本文的结构如下: 什么是单例模式 为什么要用该模式 模式的结构 代码示例 优点和缺点 适用环境 模式应用 总...
    w1992wishes阅读 403评论 1 2
  • 又要了一个毕业季,大家是不是忙着面试拿offer了。虽说出去混还是得靠真才实学,但是穿得出色绝对也是让人眼前一亮。...
    拍范阅读 456评论 0 0
  • 翻译自官网, 水平有限,用于自查。转载请注明网址: http://www.jianshu.com/p/f53ce0...
    朱柏霖阅读 1,272评论 0 1