State(状态):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
状态对于程序而言,实际上可以算是全局变量。但它是一些特定的类所用的参数。假如我们作为参数传入,则有一个问题,那就是调用者从哪里得到这个参数?如果没有合法的途径得到,那么,这个参数仍要放到全局变量中。而被调用者的行为,则是依的据这此参数而改变的。所以,用一个状态类保存这些参数,这样,被调用者就能得到这些参数。从而能按当前状态而改变。
实现方式:创建状态基本对象,由它决定在不同状态下使用不同的具体状态对象。
总结:State通过状态的改变切换对象。
选择模式:根据状态选择对象。
Strategy(策略):定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
实现方式:定义好策略接口或父类,相关子类中实现具体的算法。调用时,根据参数创建不同的策略子类。
总结:给调用方提供单一接口,方便操作。
选择模式:通过子类选择,实现不同方法也就是不同算法的选择
Template Method(模板方法):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
实现方式:定义模板父类,子类实现不同步骤的算法具体的情况好比:如果要完成一个操作,需要多个步骤,比如:A,B,C。但在不同的情况下或对应不同的类,这三个步骤中的算法也是不相同的。那么,这就属于具体变化的代码,为此,我们需要定义一个接口或抽象类,在其中有A,B,C三个方法的定义,而后,根据不同情况派生不同的具体的类,从中具体实现算法的细节。
总结:模板模式可以将一系列的步骤自动化,同时又可以满足不同的细节变化。
选择模式:通过特定的模板子类,选择特定操作步骤中的特定算法。
Visitor:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
当面对某一个对象,该对象可能拥有复杂的结构,即有可能是有很多元素(类)组成的。而程序中存在千变万化的很多对对象主体或元素的各类操作。假如把这些具体的所有的操作都写到对应的类中,那么,就破坏了原对象结构的纯洁性,产生了污染。特别是,如果是当前程序的当前模块的操作,可能较少,如果加上其它模块的,甚至包括共享给其它应用程序的。
在这一情况下,把这一类操作进行封装,从而就不需要将这些操作添加到对应的类中,成为对应类的方法。而对于不同的调用方,他们只了解他们自己的Visitor类,只使用他们用需要的操作。
实现方式:首先提供对整体或元素的一致的访问接口,比如:父类实现对整体的访问,对于PHP,子类用“伪重载”方法实现对不同元素的访问,当然也可以继承父类实现具体的操作。其次是,访问者类中实现调用方所需的对目标类的操作。
总结:对整体与单个元素的访问接口统一
选择模式:对象结构中的元素选择
后记:现在你己了解了报有23种设计模式了。也许,你认为,这些没有“例题”的讲解,你无法写出对应的代码,那么,你可以先看看PHP文档中关于PHP面向对象的章节,其次,你可以参考一下网站:http://www.fluffycat.com/PHP-Design-Patterns/,这里有所有PHP设计模式的示例原码。注意,记住所有23个设计模式的名称是比较重要的。因为,他不只是专业术语,也是你领导程序开发中的暗号。如果你上司叫你,这个问题用工厂模式解决,如果你不能记住这些名称,那么,你就无法了解你上司的意图。你做上司也一样,你可以用一个名称告诉你的下属,如何处理面临的问题。
敏捷上海之旅2010活动之中,某外籍CTO认为,PHP本身是轻型语言,使用设计模式,为PHP做个大的框架中得不偿失的。不知读者您的想法如何?如果您的框架,在您网站访问量加大时,只要增加代码,是优秀框架的目标,还是重写代码是优秀框架的目标?
这位外籍CTO不只是否认PHP框架,实际上是否认了设计模式本身。对这种花言巧语,而没有实际技术的CTO,我想他只能在中国二三流公司担任CTO,我只能无语。我想,读者您肯定也对PHP开发框架应当是什么样子,至少心中有数了。也许,你也会有想法,写一个你自己原创的PHP框架。如果是这样,那你的框架,也一定不同于那些初学的后生们的认为,只有20K,全世界最小且最优秀的神话了。如果是这样,那你还需要进一步了解的是:
领域驱动设计
MVC架构模式(它不属于设计模式,而是架构模式)(很多人把三大模式经常相混,设计模式,开发模式[比如有:DDD,TDD],架构模式,比如MVC)
了解了这些,我相信,如果你能充分把握一个大型网站的需求,那么,你能设计出好的PHP开发框架的。至少,如果你己完全明白设计模式的全部内容,那么,你现在己是一个称职的PHP核心程序员了。
分享到:
相关推荐
网页设计艺术浅述.pdf
浅述智能电网的发展
浅述中国城市广场设计的雷同化现象.docx
不过,我可以根据文件标题《浅述真空冷冻干燥机设计与计算.pdf》展开相关知识点的讨论。 真空冷冻干燥机是一种用于食品、药品和生物制品等领域的干燥设备,它通过冷冻干燥(也称为升华干燥)过程,将预冻的物料在...
浅述旅游地图制作中的色彩设计 本文从色彩心理、色彩对比设计、色彩符号设计几个方面浅述了如何在色彩方面提升旅游地图制作的美感。以下是本文的详细知识点解释: 一、色彩心理 色彩的心理效应是复杂的,涉及到人...
### 浅述机电一体化链条输送设备设计 #### 引言 随着工业自动化水平的不断提升,各种类型的输送设备在生产线上扮演着越来越重要的角色。其中,链条输送设备因其可靠性高、适用范围广等特点,在众多输送设备中...
- 参数设定:手动和自动模式的切换,以及控制参数如AL1、AL2、AH1、AH2等,这些参数对于控制系统的性能至关重要。 - 控制系统稳定性:系统经过实际应用的检验,能够达到生产要求,且长时间运行稳定,大大提高了生产...
计算机网络安全浅述(7篇)-网络安全-计算机.pdf
从最初的初步设计到详细设计,再到生产设计,每个阶段都承载着对船舶性能与安全至关重要的设计细节。本文将详细探讨船体结构设计与建造过程中的细节处理,揭示如何通过周密的设计规划和精确的建造工艺提升船舶的整体...
标题所涉及的知识点为“云计算在平面设计中的应用”。云计算是一种通过网络提供动态可伸缩的虚拟化的资源池,这些资源可以...随着技术的不断进步,云计算与平面设计的结合将更加紧密,预计会有更多创新的应用模式出现。
医院信息化管理模式的转变是当前医疗机构适应时代发展的重要课题。随着社会进步和科技的快速发展,医院必须更新管理模式,利用信息化手段提升服务质量,优化管理流程,确保患者满意度和医疗质量的提高。 国内医院...
Airbnb的旧金山总部通过提供灵活的工作区间和个性化办公桌模式,让员工可以自由选择适合自己的工作地点,从而提高工作效率和满意度。 4. 生态化设计:生态化办公空间设计强调人与自然的和谐共存。在设计中融入绿色...
浅述钛钢复合板焊接工艺
本文旨在浅述基于信息化业务的高职计算机网络教学设计路径,以期为高职教育者提供有益参考。 首先,我们必须认识到当前高职计算机网络教学中存在的一些问题。例如,教学手段较为单一,多媒体展示虽然直观,但往往...
浅述混合现实技术在设计教学场景中的应用[J]. 大观, 2017(11). [3] 李婧濛. 浅谈增强现实技术(AR)在建筑领域的应用及发展[J]. 建筑工程技术与设计, 2016(1 混合现实技术的不断发展将引领我们进入一个全新的交互...
浅述汽车企业管理控制系统.pptx
浅述工程质量的控制论文.doc