当前位置: 首页 > news >正文

单例模式

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

 

转载于:https://www.cnblogs.com/TzSteady/p/8569831.html

相关文章:

  • 清博大数据网络舆情监测\控软件功能作用与类似软件有哪些详解
  • 【VNC】Linux环境VNC服务安装、配置与使用
  • 医院片面报舆情信息怎么监测的方法建议
  • JMeter,postman
  • 如何监测舆情?三款网上舆情搜索软件工具参考
  • 如何运用舆情分析研判软件进行舆情信息获取和分析的方法
  • while循环 不使用break 语法 ,声明变量,不等于
  • 网上热议话题产生的舆情信息怎么排查的系统软件方法
  • luogup3834(主席树模板)
  • 如何写一份社区舆情信息报告的范文格式模板详解
  • expect - 自动交互脚本(转)
  • 网络舆情分析工作怎么做的平台解决办法
  • 政企如何做好互联网舆情信息监测分析的平台解决方案
  • 201521123055 软工阅读第二次作业
  • 某一舆情事舆情传播分析的三大方法技巧
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【刷算法】从上往下打印二叉树
  • axios 和 cookie 的那些事
  • Mysql数据库的条件查询语句
  • React Transition Group -- Transition 组件
  • Sass Day-01
  • v-if和v-for连用出现的问题
  • Vue全家桶实现一个Web App
  • 给初学者:JavaScript 中数组操作注意点
  • 构造函数(constructor)与原型链(prototype)关系
  • 开源SQL-on-Hadoop系统一览
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 双管齐下,VMware的容器新战略
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 以太坊客户端Geth命令参数详解
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #pragma multi_compile #pragma shader_feature
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)Nginx简介和安装教程
  • (C#)获取字符编码的类
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)php投票系统 毕业设计 121500
  • (南京观海微电子)——I3C协议介绍
  • (转)关于pipe()的详细解析
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET成年了,然后呢?
  • 。Net下Windows服务程序开发疑惑
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ C++ ] STL---string类的使用指南
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [asp.net core]project.json(2)