PHP常见设计模式,看完再说你是Phper

设计模式不仅代表着更快开发健壮软件的有用方法,而且还提供了以友好的术语封装大型理念的方法。例如,您可以说您正在编写一个提供松散耦合的消息传递系统,也可以说你正在编写名称为观察者的模式。下面我们就来看看PHP有哪些设计模式?

PHP常见设计模式,看完再说你是Phper
策略模式

策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。

策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性思想。

策略模式的三个角色:

1.抽象策略角色

2.具体策略角色

3.环境角色(对抽象策略角色的引用)

实现步骤:

1.定义抽象角色类(定义好各个实现的共同抽象方法)

2.定义具体策略类(具体实现父类的共同方法)

3.定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)

工厂模式

工厂模式是我们最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。

使用工厂模式的好处是,如果你想要更改所实例化的类名等,则只需更改该工厂方法内容即可,不需逐一寻找代码中具体实例化的地方(new处)修改了。为系统结构提供灵活的动态扩展机制,减少了耦合。

单例模式

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。

单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。

单例模式有以下3个特点:

1.只能有一个实例。

2.必须自行创建这个实例。

3.必须给其他对象提供这一实例。

那么为什么要使用PHP单例模式?

PHP一个主要应用场合就是应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。

注册模式

注册模式,解决全局共享和交换对象。已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。

适配器模式

将各种截然不同的函数接口封装成统一的API。

PHP中的数据库操作有MySQL,MySQLi,PDO三种,可以用适配器模式统一成一致,使不同的数据库操作,统一成一样的API。类似的场景还有cache适配器,可以将memcache,redis,file,apc等不同的缓存函数,统一成一致。

首先定义一个接口(有几个方法,以及相应的参数)。然后,有几种不同的情况,就写几个类实现该接口。将完成相似功能的函数,统一成一致的方法。

观察者模式

1:观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。

2:场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。

3:观察者模式实现了低耦合,非侵入式的通知与更新机制。

当新对象要填入的时候,只需要在主题(又叫可观察者)中进行注册(注册方式很多,你也可以在构造的时候,或者框架访问的接口中进行注册),然后实现代码直接在新对象的接口中进行。这降低了主题对象和观察者对象的耦合度。好的设计模式不会直接进入你的代码中,而是进入你的大脑中。

tp5商城实战、laravel5.6实战、swoole、支付接口开发、redis、高并发等,从基础到精通薇X:xiaopingguo950321 企鹅群:722584796

原文地址:http://blog.51cto.com/14122882/2338058

时间: 2024-10-12 05:50:03

PHP常见设计模式,看完再说你是Phper的相关文章

看完这篇你还敢说,不懂Spring中的IoC容器?

一. 什么是IoC 什么是耦合和内聚 耦合指的就是模块之间的依赖关系.模块间的依赖越多,则表示耦合度越高,相应的维护成本就越高.内聚指的是模块内功能之间的联系.模块内功能的联系越紧密,则表示内聚度越高,模块的职责也就越单一.所以在程序开发中应该尽量的降低耦合,提高内聚.也就是设计原则中的开闭原则和单一职责原则. 工厂模式 工厂模式就是用来解决程序间耦合的一种设计模式.可以把所有要创建的对象放在工厂的一个集合里,当需要使用这个对象的时候,直接从工厂里面取出来用就行. 工厂模式的优点: 一个调用者想

看完就改密码!但我打赌你肯定看不完

泡泡网新闻频道5月30日 今天小编在煎蛋网发现一篇长文,用玩家的话说“我……从来没有在煎蛋上见到那么长的东西……除了边栏广告……”,这篇文章题目<用户密码薄如纸>,看过之 后你会相信现世界上部分黑客猜密码的时候都会试试“对马电池订书钉(correcthorsebatterystaple)”.详情请誊出40分钟看下 文. Password:对马电池订书钉(correcthorsebatterystaple) 前情提要:可能各位煎蛋蛋友看了题图和这句话后,会有点懵.其实“对马电池订书钉”出自XFC

看完这些,你就算得上既了解围棋又了解alphago了

首先,我们要祝贺小李下出第78手的“神之一手”,这一手堪称前无古人后无来者,尤其是结合了阿尔法狗自暴自弃的表现.小李说过他的失败并不是人类的失败,同样,小李的胜利也只是属于他一人的胜利. 然而人类在围棋领域会不会最终被机器所击败这一问题,在旧摩尔定律失效的情况下还不应急着下定论,看完这篇文章后有助于形成你自己的观点. 首先我们看到这张图.有人一定会觉得奇怪了:为什么左边的是英国国旗呢?Google难道不是美国的公司吗? 原因很简单,alphago是英国的deepmind公司研发的.2014年1月

看完这个你还不理解右值引用和移动构造 你就可以来咬我(上)

共分三篇,这是第一篇.另外两篇,看完这个你还不理解右值引用和移动构造 你就可以来咬我(中),看完这个你还不理解右值引用和移动构造 你就可以来咬我(下). C++ 右值引用 & 新特性 C++ 11中引入的一个非常重要的概念就是右值引用.理解右值引用是学习"移动语义"(move semantics)的基础.而要理解右值引用,就必须先区分左值与右值. 对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值.左值和右值都是针对表达式而言的,左值是指表达式结束后依然存

设计模式:常见设计模式适用的场景

设计模式:常见设计模式适用的场景 引用:http://blog.csdn.net/longronglin/article/details/1454315  频率 所属类型 模式名称 模式 简单定义 5 创建型 Singleton 单件 保证一个类只有一个实例,并提供一个访问它的全局访问点. 5 结构型 Composite 组合模式 将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性. 5 结构型 FAÇADE 外观 为子系统中的一组接口提供一

Google I/O 最全记录,看完我们睡不着了!

钢筋与 LED 交织的露天舞台,双肩包和文化衫组合的黑压压人群,热火朝天的集市与展位,还有隔海相望的 100 万中国观众,你以为这是一场狂欢的音乐节,其实它叫 Google I/O. 欢迎来到离未来最近的发布会. Google Assistant: 一句 OK, Google,多少手指都用不上了 人工智能是今年的 Google I/O 的一大主题.在发布会一开始,Google CEO 桑达拉·皮蔡(Sundar Pichai)就强调机器学习在生活中扮演的重要角色.随后,一系列基于 Google

[经验] 电脑维修(看完后就可以开一家自己的电脑维修店!)

[经验] 电脑维修(看完后就可以开一家自己的电脑维修店!) 第一部分 总则 第一章 电脑维修的基本原则和方法 第二章 电脑维修步骤与维修操作注意事项 第二部分 常见故障判断 第一章 加电类故障 第二章 启动与关闭类故障 第三章 磁盘类故障 第四章 显示类故障 第五章 安装类故障 第六章 操作与应用类故障 第七章 局域网类故障 第八章 Internet类故障 第九章 端口与外设故障 第十章 音视频类故障 第十一章 兼容类故障 第三部分 附录 硬盘基本知识 挽救硬盘的几个方法 硬盘逻辑锁巧解 WIN

wwwlyjustcom看完这篇,你就会Linux基本操作了,请耐看完199O8836661

只有光头才能变强这个学期开了Linux的课程了,授课的老师也是比较负责任的一位.总的来说也算是比较系统地学习了一下Linux了~本文章主要是总结Linux的基础操作以及一些简单的概念,对于开发者来说,能使用Linux做一些基本的操作是必要的!那么接下来就开始吧,当然了我的Linux仅仅是入门水平,如果有错的地方还需请大家多多包涵,并不吝在评论区指出错误~一.为什么我们要学习Linux相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形

PDF怎么拆分成多个PDF,看完这篇文章你就明白了

PDF文件对于每一个经常在职场上工作的人来说,是特别常见的一个文档格式,PDF格式深受人们的喜爱,因为是特别好用的,但同时也是比较难进行编辑和修改的,特别是遇到PDF文档过长,为了方便浏览和及时查找对我们有用的内容,这就需要将PDF文档拆分成多个PDF,那么PDF怎么拆分成多个PDF?通过今天的文章就来告诉大家PDF文档拆分的方法,看完这篇文章你就明白了,那么我们就一起来看看吧.?方法一:软件拆分法借助软件:如果想要将PDF文档拆分成多个PDF,那就需要借助迅捷PDF转换器来实现,这个软件有着丰