zoukankan      html  css  js  c++  java
  • 1 单例设计模式

    单例模式是指整个应用中类只有一个对象实例的设计模式。

    使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。

    私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。

    每次用 new 类名 的方式,就可以创建一个对象。我们必须禁止外部程序用 new 类名的方式来创建多个实例。

    解决办法是:我们将构造函数设置成 private ,让构造函数只能在内部被调用,而外部不能调用。这样,这个类就不能被外部用 new 的方式建立多个实例了。

    经典的设计模式主要有2种:懒汉式和饿汉式。下面分别展示代码。

    懒汉式:

    懒汉式单例模式既在需要的时候才创建单例对象,即“用时间换空间”。

    //懒汉式
    class Single {
        static private $instance = null;//声明一个静态变量(保存在类中唯一的一个实例)
        private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
    
        }
    
        static public function getInstance(){//声明一个getInstance()静态方法,用于检测是否有实例对象
            if(self::$instance == null) {
                self::$instance = new self();
            }
            return self::$instance;
        }
    }
    $instance = Single::getInstance();//得到实例

    饿汉式:

    饿汉式的特点是一开始就创建实例,即“用空间换时间”

    php有一个特性,不支持在类定义时给类的成员变量赋予非基本类型的值。如表达式,new操作等等。故我目前还无法实现php的饿汉式单例。下面用Java实现一下:

    //饿汉式单例模式
    public class Single2 {
        //设立静态变量,直接创建实例
        private static Single2 Single = new Single2();
     
        private Singlet2(){
            //私有化构造函数
    
        }
        
        //开放一个公有方法,返回实例
        public static Single2 getInstance(){
            return Single;
        }
    }
  • 相关阅读:
    Python 异常处理
    汉语分词软件的使用 (python底下)
    谈谈python的文件处理——文件的输入与输出
    统计翻译系统中的开源工具们
    研究生如何选定课题方向 如何变学神
    口语翻译——AI过程的必经之路
    google的盈利模式
    机器翻译软件从实验室走向市场
    I'm Back
    jquery getJSON
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10540107.html
Copyright © 2011-2022 走看看