博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[设计模式]PHP设计模式之单例模式
阅读量:7087 次
发布时间:2019-06-28

本文共 832 字,大约阅读时间需要 2 分钟。

面试最常见的问题之一就是  请问您知道哪些设计模式

这次先介绍最经典的单例模式.
单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。
单例模式有以下3个特点:
1.只能有一个实例。
2.必须自行创建这个实例。
3.必须给其他对象提供这一实例。
单例模式的优缺点:
优点:
1. 改进系统的设计
2. 是对全局变量的一种改进
缺点:
1. 难于调试
2. 隐藏的依赖关系
3. 无法用错误类型的数据覆写一个单例
不多废话,直接上代码. 有注释 

<?php
class
Model
{
    
public
static
$instance
;
//模式的关键,一个静态变量,储存自身
    
public
static
function
getInstance()
    
{
        
if
(!
static
::
$instance
)
static
::
$instance
=
new
Model();
//如果常量不存在(第一次使用才会执行),则实例化(懒汉模式,不调用则不实例化)
        
return
static
::
$instance
;
//不管是第一次或是第n次.$instance都已经被初始化
    
}
    
private
function
__construct(){}
    
private
function
__clone(){}
    
public
function
getData()
    
{
        
return
'data'
;
    
}
     
}
//$model = new Model();//报错,因为不允许直接实例化,也不允许克隆
$smodel
= Model::getInstance();
//调用一次
$smodel2
= Model::getInstance();
//再调用一次
var_dump(
$smodel
,
$smodel2
);
//打印发现,两个资源号完全一样

转载于:https://www.cnblogs.com/hangxing1996/p/6689089.html

你可能感兴趣的文章
基于组织目标采用合适的敏捷方法
查看>>
Spark性能调优之道——解决Spark数据倾斜(Data Skew)的N种姿势
查看>>
李彦宏宣布百度架构调整:智能云事业部升级
查看>>
NetBeans第一部分代码提交Apache
查看>>
支持医学研究的Apple开源移动框架
查看>>
使用人工智能测试软件
查看>>
InfoQ趋势报告:DevOps 和云计算
查看>>
Microsoft Edge中新的F12开发者工具
查看>>
为所有PHP-FPM容器构建单独的Nginx Docker镜像
查看>>
微软宣布Azure Functions正式支持Java
查看>>
抖音成2018年全球iOS设备上下载最多的应用\n
查看>>
IBM核心软件如何应对“互联网+”的技术挑战
查看>>
Weaveworks增加发布自动化和事件管理
查看>>
LeetCode[337] House Robber III
查看>>
Weblogic 12c 使用 WLST 新建域
查看>>
快速掌握dockerfile
查看>>
Android动态设置主题(使用RxBus模式)
查看>>
CMake 简介和 CMake 模板
查看>>
SnapKit自动布局(三)
查看>>
SegmentFault D-Day 2016「天津站: 前端场」活动回顾
查看>>