编程中的那些套路——关于单例模式

该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP

在设计模式中,单例模式工厂模式)可以说是使用的最普遍的设计模式了,所以掌握此种模式尤为重要。

单例模式一般使用在资源共享和需要控制资源的情况下。

例如:购物车,回收站,数据库连接池,计数器,配置文件共享等所有项目中只需要存在一个的模块,你都可以采用单例模式。

单例模式的好处就在于当前进程只产生一个对象(或者叫做模块),
但有一点需要指出,如果单例模式的操作对象是一个资源类型,那么此时的单例模式并不是纯粹的单例模式,因为php的生命周期仅仅是页面级别的,所以他无法像Java语言那样在内存中将这个资源类型存起来,并且我们也无法借助类似redis的nosql缓存数据库,因为资源类型(类似mysql_connect的返回值)是无法被序列化(指的是资源无法转成字符串)。

即,php的单例,仅指进程中单例,不似java,在整个内存中单例,所以在PHP语言下,单例模式是有瑕疵的。

上代码:

单例模式.php

 select_db('test'));    print_r($db->select_db('test'));    print_r($db->select_db('test'));    //output:只有一次实例化111    ?>

通过输出(output)可以看出页面执行中,数据库类(class Database)只有第一次调用的时候是真实实例化的,剩下的调用都是直接从静态变量获取该实例的,这样的话就防止了在一次生命周期中多次连接数据库了,极大的节省了资源,这就是单例模式。

该文章属于《编程中的那些经典套路——设计模式汇总》系列

关键字:php, 设计模式, 面试相关, 编程思想

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部