php模式设计之单例模式

时间:2022-11-03 07:08:46 | 浏览:7283

模式设计是什么?初学者一开始会被这高大上的名称给唬住。而对于有丰富编程经验的老鸟来说,模式设计又是无处不在。很多接触的框架就是基于各种模式设计形成的。 简单说,在写代码的过程中一开始往往接触的是面向过程的,简单的基础的编程。这个时候我们往往

模式设计是什么?初学者一开始会被这高大上的名称给唬住。而对于有丰富编程经验的老鸟来说,模式设计又是无处不在。很多接触的框架就是基于各种模式设计形成的。 简单说,在写代码的过程中一开始往往接触的是面向过程的,简单的基础的编程。这个时候我们往往追求的是代码能够实现某项功能就万事大吉。管他代码多么冗余,管他代码是否可重用,管他效率如何,能实现功能就好。但是,真正应用于实际的,更被大家采纳的是那些高效的,可重用的,便于团队开发的代码。基于这些因素,你不能像练手一样,随便命名函数名,随便放置脚本。模式设计告诉是给人们组织代码提供一种思路,实现可重用代码、让代码更容易被他人理解、保证代码可靠性。

在所有模式设计中,有三种基础设计模式,单例模式,工厂模式,注册树模式,其他模式往往基于这几种模式,今天带来的是单例模式。

什么是单例模式?

根据这个名称,我们很容易了解到,单例模式指的是在整个应用中只有一个对象实例的设计模式。

为什么要用单例模式?

php常常和数据库打交道,如果在应用中如果频繁建立连接对象,进行new操作的话,会消耗大料的系统内存资源,这并不是我们希望看到的。再则,在团队合作项目中,单例模式可以有效避免不同程序员new自己的对象,造成人为的系统消耗。

 如何建立单例模式?

在看到这个问题的时候,相信优秀的程序员很可能自己试着根据要求去创建单例模式,而不是坐等前人的经验。区别于其他博友告诉你什么样的模式是单例模式,我人更愿意和有面向对象编程基本经验的你考虑一下如何自己建立单例模式。

我们首先从题目出发,单例模式是只有一个对象实例的设计模式。这一点是很让人蛋疼的。我们平常创建的类不是能创建很多对象的,就是不能创建对象的(抽象类)。要创建对象需要有类这是必须的,而且不能是抽象类。这个类要防止别人可以多次创建函数。我们自然而然考虑到了从构造函数入手。但是,每次new操作都会调用构造函数,也就是会多次创建对象实例。这和我们设计初衷相悖了。在此处务必申明构造函数为private或者protected这样才能解决这个问题。

构造函数被申明为private或者protected这注定无法通过new的方法创建实例对象了。而且我们发现,经过这一步处理后,解决问题的前景变得明朗起来了。为什么呢?既然无法通过new方法创建对象实例,那么我们只能通过类内的方法来创建对象实例了。 这个时候我们面临一个有趣的先有鸡还是先有蛋的问题。我们往往往往是创建了对象后才调用对象的方法,而此时需要调用类里面的方法来创建对象。不受是否创建对象影响都能调用的方法的解决方案毋庸置疑那就是利用关键字--static。

在类内创建静态方法完成完成什么工作呢?回归主题:确保只创建一个实例对象。如何确保只有一个呢?这很简单,if判断一下啊。存在的话直接返回,不存在自己创建一个嘛。当然这个实例对象是类的静态属性。至此,单例模式要求的功能实现完成。真的完成了么?还不算~如果有个类继承本类,将构造方法申明为public那不又坏事儿了?那有必要在构造方法前加final关键字了。

最后贴上单例模式代码,代码解释都在上面了~~

<?php

class Single{

public $hash;

static protected $ins=null;

final protected function __construct(){

$this->hash=rand(1,9999);

}

static public function getInstance(){

if (self::$ins instanceof self) {

return self::$ins;

}

self::$ins=new self();

return self::$ins;

}

}

本身单例模式并不复杂,但需要深入理解。很多初学者依旧会感叹:卧槽,构造方法原来不一直是public啊~卧槽还可以不通过new创建对象啊~其实笔者想说,不管构造方法被申明为public,private还是protected,最终创建对象的时候都会调用。一直是new创建对象实例,单例模式也用new创建对象,只是换个地方而已,从类外到类内。

相关资讯

起名要慎重,50个专门设计的幸福永远的佳名分享

"——《全宋词西江月(丹桂)》解释:这两句以拟人的手法刻画出了桂花的形态,展现了桂花枝叶的茂密,花朵的明丽。"——《全宋词春光好》点评:“思”指思念、心思,在此句中表示想念,用在宝宝名字中能够增加名字的诗意。

普通人的6种赚钱模式,做得好一样能当老板,看看你是属于哪种

其实现在的自媒体也算是一种圈子赚钱的模式,分享某个行业的内容,吸引粉丝关注。不同的人群,赚钱的模式都是不一样的。这一期文章,我就想分享一下,普通人赚钱的6种模式,看看你是哪属于哪一类。第四种:资源赚钱靠资源赚钱的模式,大部分都是一些创业者。

赚钱这件事儿,其实就三种模式

人很年轻,比我和史小嘴年龄小,引流特别厉害,而且不是人工引流,人家做了个程序,这个程序可以抵100个人的工作产出。上次我们刚见完面,他就要去见客。上周到北京,在史小嘴工作室里,见到了尹强老师。因为跑通了引流这件事,现在有一大堆公司要找他合作。

php需要云服务器什么环境

php需要云服务器什么环境?云服务器开通后,需要根据需求安装所需环境。2、选择镜像市场中他人分享的镜像(含操作系统),选择使用【宝塔控制面板】进行环境安装。3、使用服务IP:8888进入【宝塔控制面板】后台。

php云虚拟主机价格便宜

php价格便宜,购买就到,20年知名老牌主机服务商,产品丰富,满足不同用户需求。拥有40余种在线管理功能,易操作,管理便捷。并且价格便宜,支持试用,专业团队7。

集度ROBO-01概念车首发 展示汽车机器人三大设计基因

BulletinPoints:·集度汽车机器人的三大设计基因:未来主义、机器人化、共情·集度概念车ROBO-01在“希壤”元宇宙发布,数字人“希加加”成首位车主·集度概念车首发多项智能化设计:U型折叠方向盘、3D无界一体化超清大屏、·3D人机共驾地图、车内外全场景语音、毫秒级语音响应,全离线智能语音等

设计师才会告诉你的60个装修细节!看似不起眼,居住起来很幸福

装修是个烧钱的活,很多时候看起来可有可无的设计,在预算不够的情况下,大家也就忽略了。但是,这些看似不起眼的小细节,会给生活带来不少的便利。今天我们来说说那些只有设计师才会告诉你的装修细节,足足60个!

装修这4种设计,爸妈再三强调不能省,当初不情不愿,入住后真香

虽然装修时没有让爸妈插手,但他们也给了不少的建议,其中有4种设计,爸妈再三强调一定要装,不能省,但在我看来,全都些鸡肋浪费钱的设计。不过最后还是不情不愿地听了爸妈的话,入住后真的越用越香,看来是我以前是我肤浅了!1、拖把池以前拖把池是很常见

若你打算装修,这13个设计,很冷门,但很好用

1旋转电视旋转电视,顾名思义,就是可以旋转的电视↓↓↓● 优势:可以适用于两个空间,比如客厅与餐厅之间,客厅与卧室之间,一个电视两处使用。今天,来盘一盘那些冷门但好用的装修技巧。如果需要打墙,需要是非承重墙哦。

装修做了27个设计,永远不后悔

有时候别人的装修后悔可能和自己无关,但是别人装修的经验长处往往可以借鉴过来为自己所用。第一、进门鞋柜感应灯▲鞋柜镂空处加入人体和光敏感应的灯条,提前预留好电源线,很简单的操作,每天晚上回家都不用摸黑开灯了,打开入户门自动亮起,虽然只有很短的。

友情链接

天天财经元宇宙中国SEO域名抢注宝宝起名网网站监控桂林旅游网鹤壁新闻头条网电子烟品牌排名网广州新闻资讯网澳大利亚旅游网台州头条新闻网贵阳新闻头条网燕京啤酒A股票全球品牌加盟网迈阿密游记长沙新闻资讯网十二生肖起名网口子窖A股贵阳交友相亲网夏令营资讯官网佛山照明灯饰网信用卡申请中心出国留学网董氏起名神器居家风水学南宁旅游网保龄球初学网鹰潭新闻资讯网武汉新闻头条网SEO优化知识网防城港新闻资讯网娄底新闻头条网何姓取名网咸宁新闻爆料网宁德时代A股
PHP编程知识网-php开源建站系统、PHP程序员网站开发、php编程工具、php菜鸟教程下载、PHP网络编程教学、php网络编程、php工程师、php菜鸟教程数据库、PHP网站开发、PHP精品源码网站、php程序员入门、php零基础入门教程、php源码搭建网站流程、php从入门到精通第2版、php开发简单网站、php制作网站实例、php网站开发实例教程源代码、php中文网破解版、php中文网。
php编程知识 yoceo.cn©2022-2028版权所有