zoukankan      html  css  js  c++  java
  • 单例模式小案例

    案例一:

    //创建一个操作数据库的工具类,要求只链接一次数据库
    class DaoMysql{
        //定义需要的属性
        //$mysql_link是数据库链接
        private $mysql_link;
        // $instance是一个静态属性,表示DaoMysql的一个对象实例
        private static $instance = null;
        //构造方法 将构造方法设置为私有
        private function __construct($host,$user,$pwd){
            $this -> mysql_link = @mysql_connect($host,$user,$pwd);
        }
        //写一个静态方法创建对象实例
        public static function getSingleton($host,$user,$pwd){
            //通过 getSingleton来创建对象
            //进行判断如果$instance为空则创建一个对象实例不为空则直接返回$instance
            //instanceof 判断对象实例是否是一个类的对象
            if(!self::$instance instanceof self){
                self:: $instance = new self($host,$user,$pwd); 
            }
            return self:: $instance;
        }
        //阻止克隆
        private function __clone(){}
    }
    $dao1 = DaoMysql::getSingleton('localhost','root','');
    $dao2 = DaoMysql::getSingleton('localhost','root','');
    $dao3 = DaoMysql::getSingleton('localhost','root','');
    $dao4 = DaoMysql::getSingleton('localhost','root','');
    var_dump($dao1,$dao2,$dao3,$dao4);

     案例二:

    class Girl{
        private $name;
        private $age;
        private $stature;
        private static $instance = null;
        private function __construct($name,$age,$stature){
            $this -> name = $name;
            $this -> age = $age;
            $this -> stature = $stature;
        }
        public static function getGirl($name,$age,$stature){
            if(!self::$instance instanceof self){
                self::$instance = new self($name,$age,$stature); 
            }
            return self::$instance;
        }
        private function __clone(){}
    }
    $girl1 = Girl::getGirl('小红',29,160);
    $girl2 = Girl::getGirl('小花',23,162);
    $girl3 = Girl::getGirl('小玲',26,165);
    var_dump($girl1,$girl2,$girl3);
  • 相关阅读:
    一个简单的ASP.NET MVC异常处理模块
    通过源码了解ASP.NET MVC 几种Filter的执行过程
    跨站请求伪造
    显示实现接口
    数组为什么可以使用linq查询
    编写轻量ajax组件03-实现(附源码)
    事件
    编写轻量ajax组件02-AjaxPro浅析
    委托
    静态构造函数
  • 原文地址:https://www.cnblogs.com/rickyctbur/p/11076367.html
Copyright © 2011-2022 走看看