PHP设计模式——概述

      
声明:本系列博客参考资料《大话设计模式》,作者程杰。

         

       常见的面向对象设计模式大约有23种,但是自从接触PHP后,渐渐发现常见的设计模式好像少了很多,网络上的资料也比较少,身边的PHP同事们有的甚至没有听说过设计模式,这也有可能是PHP的发展所带来的,因为PHP对面向对象支持的比较晚,好多PHP程序员还按照面向过程的思想写代码。于是,我决定把原来用C#写的面向对象设计模式用PHP改写。

      

        经常听见其他程序员(Java、C#)等说PHP是不是运行在浏览器端的脚本语言,其实我在接触PHP之前也这样认为过,后来发现PHP是用C语言开发出来的一种语言,C语言是真正意义上跨平台的语言,这也注定PHP是跨平台的,PHP是可运行在Windows Server或Linux操作系统的服务器上的语言,它和Java以及C#一样,代码存储并运行在服务器端,它将浏览器端可执行的HTML以及脚本发送给浏览器执行,PHP相对Java和C#对于面向过程的封装更多,减少部分数据类型的支持。

        PHP是面向对象的,PHP能够得到这样快速的发展,能够被互联网大企业所广泛应用,证明PHP是经得住考验的,随着移动互联网的不断发展,PHP还会更广阔的天地。

  

      什么是设计模式?

       设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。     

        项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

       设计模式的优点:

       
1).复用解决方案: 设计模式本身就是对某一类问题的通用解决方案,是更高级别的复用,已经超出了代码复用.

       
2).确定通用术语:开发中的交流和协作都需要共同的词汇其础和对问题的共识.
当你有想表达却又表达不清楚的设计思路,即使表达出来也会被同事误解的时候,设计模式就显出沟通的优势了。

       
3).代码更易于修改与维护。因为设计模式都是久经考验的解决方案,它们的结构都是经过长期的发展形成的,善于应对变化,设计模式本身也是对变化点的封装。

        4).模式有助于提高思考层次。学习模式后,就算不用模式中的方法,也会更好的采取更好的策略去解决问题。

        在接下来的篇幅里会详细介绍PHP面向对象设计模式,本系列博客以设计模式的原理为核心,列举最简单的例子,让只要有一点面向对象基础的读者都能看明白。

        更多详情敬请关注我的视频课程:

         PHP面向对象设计模式

             分享一个我在公司内部培训的资料,C#实例源代码及类图:

          

             设计模式源代码及UML类图

        对应23种面向对象设计模式PPT:

          23种常用面向对象设计模式

时间: 2024-12-22 13:39:13

PHP设计模式——概述的相关文章

基于MVC模式的Struts框架概述

作者:yarshray   关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts 内容简介:        MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.        本文内容注重理论和实践相结合,比较系统的从多层设计方式到分布式软件开发中所用到的技术,从而切入目前Sun公司退出的

JavaScript设计模式入门和框架中的实践

在编写JS和组装代码的过程中,运用一定的设计模式可以让我们的代码更加优雅.灵活. 下面笔者就结合诸如redux的subsscribe.ES6的class.vue里面的$dispatch.jquery里面的on/off来给大家简单介绍下设计模式在这些库.语法和框架中的使用. 设计模式解决的问题 设计模式并不是很玄乎的知识,很多同学在编写JS代码的时候已经在不经意间用了不少设计模式了. 笔者认为把设计模式单独抽象出来探讨,就和算法中抽象出来冒泡.排序一样,是为了描述一种常用的JS pattern.

第22章 职责链模式(Chain of Responsibility)

原文 第22章 职责链模式(Chain of Responsibility) 职责链模式        导读:职责链模式是一个既简单又复杂的设计模式,刚开始学习这个设计模式的时候光示例都看了好几遍.就为了理清里面的逻辑走向.是个值得慢慢品味的设计模式        概述:        使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止.          结构图:          代码举例:公司请假

JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法

JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很多的知识点需要我们的突破,所以写下这个java进阶之旅的系列,这个系列不会说的那么的基础,主要是对一些高级点的功能进行剖析,所以,一起来看看吧! 一.增强for循环 for循环在我们的开发中是非常非常的多的,但是有多少人会用增强for循环?其实还是有很多人会用哈,但是还是有很多人一知半解,我们来看一

概述:3种设计模式

     什么是设计模式?     设计模式的每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动.     设计模式让我们站在了巨人的肩膀上,告诉我们不是解决任何问题都是要从头开始的. 3种设计模式 首先来看设计模式是如何分类的:  我们根据根据两条准则对设计模式进行分类: 1,目的准则: 模式是用来完成什么工作的. 模式依据其目的可分为:创建型,结构型,行为型. 其中:    创建型模式与对象的创建有关:    结构

.NET设计模式研究之装饰模式

设计 概述 在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性:并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀.如何使"对象功能的扩展"能够根据需要来动态地实现?同时避免"扩展功能的增多"带来的子类膨胀问题?从而使得任何"功能扩展变化"所导致的影响将为最低?这就是本文要讲的Decorator模式. 意图 动态地给一个对象添加一些额外的职责.就

.NET下的设计模式研究之桥接模式

设计 概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种"多维度的变化"?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式. 意图 将抽象部分与实现部分分离,使它们都可以独立的变化.[GOF <设计模式>] 结构图 图1 Bridge模式结构图 生活中的例子 桥接模式将抽象部分与它的实现分离,使它们能够独立地变化.一个普通的开关控制的电灯.电风扇等等,都是桥接的例子.开

降龙十八掌:Timer 概述

Timer 概述 公共构造函数Timer 构造函数 已重载.初始化 Timer 类的新实例. 公共属性Container(从 Component 继承) 获取 IContainer,它包含 Component. Enabled 获取或设置计时器是否正在运行. Interval 获取或设置计时器开始计时之间的时间(以毫秒为单位). Site(从 Component 继承) 获取或设置 Component 的 ISite. 公共方法CreateObjRef(从 MarshalByRefObject

设计模式的C++实现之外观模式

概述 想想我们小时候玩的四驱车,里面的构造很复杂,马达,舵机,电池组等等,而我们控制它却非常简单,只 要打开电池开关,他就可以跑.我们其实不用知道它里面是如何工作,只要知道拨动开关它就可以工作就行了,这个开关其 实就四驱车给我们的一个友好的组件,使得我们可以很方便的控制它. 外观模式其实定义了一个高层接口,该接口 为子系统中的一组接口提供一个一致的界面,使得这一子系统更加容易使用. 类图和样例 在这个对象图中,出现了两个 角色: 外观(Facade)角色:客户端可以调用这个角色的方法.此角色知晓