该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言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)只有第一次调用的时候是真实实例化的,剩下的调用都是直接从静态变量获取该实例的,这样的话就防止了在一次生命周期中多次连接数据库了,极大的节省了资源,这就是单例模式。
该文章属于《编程中的那些经典套路——设计模式汇总》系列
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/21673.html
摘要:我们应该写一段拓展性强与维护性较强的代码,由此衍生出观察者模式。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天我们来谈谈观察者模式,这是一个经常用到的设计模式。 让我们想象一个场景:一个网站有不同等级区域的用户,不同等级的的用户登录后可以获得对应的服务(一级用户登录后获得一级服务,二级用户登录后获得二级服务,…以此类推)。那么我们如何写这段业...
摘要:如果看不懂的话,可以在评论区中提问,我会第一时间回答你无论何时我一直都在嗯哼该文章属于编程中的那些经典套路设计模式汇总系列 在正式阅读前,我先谈谈我们该用什么姿势和心态学习设计模式: 如果你还没有过多的编程经验(泛指半年以下),我建议你把它当做小说来看,能看懂多少是多少,因为半年以下经验的程序员用到设计模式的情况只会出现在面试上,至于实际工作中?相对来说这部分不会由你负责。 如果你已...
摘要:该文章属于编程中的那些经典套路设计模式汇总系列,并且以下内容基于语言前面我们写了简单工厂模式,编程中的那些套路关于简单工厂模式,但简单工厂模式有一些不足违反开放封闭原则,所以需要设计出一套更加规范的设计模式。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 前面我们写了简单工厂模式,《编程中的那些套路——关于简单工厂模式》,但简单工厂模式有一些不足(...
摘要:简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。重点来了,简单工厂模式的不足但是简单工厂模式有一个不足,虽然它遵循了单一职责原则,但它违反了另一条同样很重要的原则开放封闭原则。 该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 面向对象五大原则中有一点非常重要的原则:单一职责原则。 简单工厂模式就是遵循了这一原则,它让不同职责的类各司其职。 ...
该文章属于《编程中的那些经典套路——设计模式汇总》系列,并且以下内容基于语言PHP 今天来谈谈责任链模式,乍一听责任链模式好像很高级的一样,但是相信我,其实每位天朝的同学都十分熟悉这个模式,责任链模式,就好像中国的官场制度一样,每一个级别的权利都区分的很细,举个生活中的栗子: 村委不能越级去替镇委办事情,如果村委无法解决,只能向上求助镇委 镇委不能越级去替市委办事情,如果镇委无法解决,只能向上求...
阅读 1799·2023-04-26 00:59
阅读 3108·2021-11-15 18:10
阅读 3035·2021-09-22 16:02
阅读 748·2021-09-02 15:15
阅读 3696·2019-08-30 15:56
阅读 1896·2019-08-30 15:54
阅读 2793·2019-08-29 16:31
阅读 2002·2019-08-29 16:10