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

    <?php
    class Preferences{
    private $props = [];

    //实例载体,利用静态的属性
    private static $instance;

    private function __construct(){}

    public static function getInstance()
    {

    //仅被实例一次
    if( empty( self::$instance) )
    {
    self::$instance = new Preferences();
    }

    return self::$instance;
    }

    public function setProperty( $key, $val )
    {
    $this->props[$key] = $val;
    }

    public function getProperty( $key)
    {
    return $this->props[$key];
    }

    }

    $prev = Preferences::getInstance();
    $prev->setProperty("name","TzSteady");

    unset($prev);
    $prev2 = Preferences::getInstance();
    var_dump($prev2->getProperty("name"));

    //通过调用getInstance来获取实例对象,并且仅此被实例一次

    单例模式的优点:

    1.提供了唯一实例的受控访问

    2.节省资源,因为只有一个对象

    缺点:

    1.因为没有抽象层,所以扩展有很大的困难

    2.依赖性太强

    3.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失

  • 相关阅读:
    TcpClient
    文字识别
    halcon17.12 win7 64深度学框架搭建
    halcon多个形状模板匹配
    halcon 瓶盖定位
    halcol9点标定
    一个机械臂的正逆解
    Matlab robot-9.10(rvctools) 建模与正逆解
    16路舵机控制器USB访问
    C#二维码识别
  • 原文地址:https://www.cnblogs.com/TzSteady/p/8569831.html
Copyright © 2011-2022 走看看