浅谈设计模式 - 单例模式

2015-09-21 derekchan 更多博文 » 博客 » GitHub »

设计模式,php,单例模式

原文链接 http://gitdc.com/2015/09/21/design-pettern-singleton.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


每个第三季度都是最忙的,工程师活动,部门事务,终于得以闲下来打理自己的网站了,之后会恢复发布文章的频率(每周至少一篇),有什么聊什么,也沉淀下自己的文笔。

PS:博客没怎么去推广,就当作自己跟自己的谈话吧。

今天来浅谈下设计模式中的单例模式。单例模式是最常用到的设计模式之一,有时候在单线程中需要多次调用到同一个类对象,每实例化一次,内存君就多创建一个内存地址,这样就造成了资源浪费,严重的冗余。利用单例模式则可以有效的减少这种资源浪费。

    <?php 
    /**
     * 单例模式
     *
     * @author Derek Chan <dchan0831@gmail.com>
     * @version 2015-09-28
     */
    class Single {

        private static $model;

        /**
         * 構造函數 - 私有化
         * 不讓外部實例化
         */
        private function __construct(){}

        /**
         * 內部實例化方法
         *
         * @return object $model
         */
        public static function getInstance(){

            if (is_null(self::$model)) {
                self::$model = new static;
            }

            return self::$model;

        }

        public function test(){
            echo 'Hello World!';
        }
    }

    $model = Single::getInstance(); 
    $model->test();  

如果再追求完美點,可以將__clone方法給私有化防止克隆來保證單例的特性。 以上