设计模式之PHP项目应用
将23种经典的设计模式应用到实际的PHP项目中。让自己更容易理解和应用23种设计模式的精髓!
CleverCode
这个作者很懒,什么都没留下…
展开
-
设计模式总结
1 设计模式之间的关系2设计模式归纳3 面向对象原则3.1 单一职责原则一个类,只有一个引起它变化的原因。3.2 开放封闭原则软件的实体(类,模块,函数等等)应该是可以扩展的,但是不可以修改。3.3 里氏替换原则子类可以替换父类并且出现在父类能够出现的任何地方3.4 依赖倒置原则传统的结构化编程中,最上层的模块通常都要依赖下面的子...原创 2016-12-20 15:13:54 · 1464 阅读 · 0 评论 -
面向对象五大原则
面向对象五大原则技术交流CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!...原创 2016-12-18 12:25:29 · 1344 阅读 · 1 评论 -
php享元模式
CleverCode最近在看享元模式。1 模式介绍 运用共享技术有效的支持大量细粒度的对象2 模式中的角色 (1) 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。在Java中可以由抽象类、接口来担当。 (2) 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供存储空间。 (3) 享元工厂角色:负责...原创 2016-11-12 16:11:21 · 1796 阅读 · 0 评论 -
php访问者模式
CleverCode最近在看访问者模式。1 模式介绍 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作2 模式中的角色 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它。...原创 2016-11-12 15:35:01 · 1551 阅读 · 0 评论 -
php组合模式
CleverCode最近在看组合模式。1 模式介绍 将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。2 模式中的角色 1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。 2.Leaf 在组合中表示叶子结点对象,叶子结...原创 2016-11-12 14:54:07 · 1540 阅读 · 1 评论 -
php外观模式
CleverCode最近在看外观模式。1 模式介绍 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。2 模式中的角色 2.1 外观类(Facade):外观类知道哪些子系统类负责处理请求,将客户的请求代理给恰当的子系统对象。 2.2 子系统类集合(SubSystem Classes):子系统类集合实现了子系统...原创 2016-11-12 14:21:28 · 1357 阅读 · 0 评论 -
php装饰模式
CleverCode最近在看备装饰模式。1 模式介绍 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2 模式中的角色 (1)抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 (2)具体构件(Concrete Component)角色:定义一个将要接收附加...原创 2016-11-12 13:45:56 · 1280 阅读 · 0 评论 -
php备忘录模式
CleverCode最近在看备忘录模式。1 模式介绍 在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2 模式中的角色 1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento存储自...原创 2016-11-05 17:24:28 · 1973 阅读 · 2 评论 -
php抽象工厂模式
CleverCode最近在看抽象工厂模式。1 模式介绍 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。2 模式中的角色3 模式结构4 项目应用4.1 客户可以根据自己的需求选择sqlserver数据库或者access数据库4.2 类图.4.3 php...原创 2016-11-05 14:21:03 · 1425 阅读 · 0 评论 -
php工厂方法模式
CleverCode最近在看工厂方法模式。1 模式介绍 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。2 模式中的角色 2.1 抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 2.2 具体工厂(Concrete Cr...原创 2016-11-05 12:39:40 · 2918 阅读 · 0 评论 -
php建造者模式 - 组装车
1 模式介绍 是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2 模式中的角色 1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建。 2. ConcreteBuilder:实现Builder接口,针...原创 2016-10-31 19:38:44 · 1272 阅读 · 0 评论 -
php迭代器模式
1 模式介绍 提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。2 模式中的角色 2.1 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。 2.2 具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链...原创 2016-10-31 16:27:45 · 1023 阅读 · 0 评论 -
适配器模式设计插头标准
1 模式介绍 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2 模式中的角色 2.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 2.2 需要适配的类(Adaptee):需要适配的类或适配者类。 2.3 适配器(Ada...原创 2016-10-31 14:57:49 · 1413 阅读 · 0 评论 -
解释器模式设计路由器
1 模式介绍 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。2 模式中的角色 1.AbstractExpression(抽象表达式) 声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。 2.TerminalExpression(终结符表达式) 实现与文法中的...原创 2016-10-30 17:55:39 · 1765 阅读 · 0 评论 -
原型模式设计克隆人
1 模式介绍 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象2 模式结构 3 项目应用 设计一个可以克隆person的类。3.1 源码<?php/** * 原型模式 * copyright (c) http://blog.csdn.net/CleverCode...原创 2016-10-30 15:05:26 · 1077 阅读 · 0 评论 -
模板方法模式设计答题问题
1 模式介绍 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法...原创 2016-10-23 12:04:49 · 1645 阅读 · 0 评论 -
代理模式设计只能内网访问线上数据库
CleverCode最近在看代理模式。1 模式介绍 在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。 2 模式组成 抽象角色:通过接口或抽象类声明真...原创 2016-10-13 11:21:39 · 1619 阅读 · 0 评论 -
责任链模式解决请假问题
CleverCode最近在看责任链模式。1 模式介绍 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这个链传递该请求,知道有一个对象处理它为止。 2 模式组成 2.1 抽象处理者(Handler)角色: 定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色...原创 2016-10-13 10:45:59 · 1924 阅读 · 0 评论 -
命令模式解决调用系统命令
CleverCode最近在看命令模式。1 模式介绍 将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。2 模式组成 2.1 抽象命令(Command):定义命令的接口,声明执行的方法。 2.2 具体命令(ConcreteCommand):具体命令,实现要执行的方法,...原创 2016-09-12 17:08:48 · 1256 阅读 · 0 评论 -
桥接模式解决人开车问题
CleverCode最近在看桥接模式,发现桥接模式的应用场景真的是非常多。1 模式介绍 桥接模式(Bridge),将抽象部分与它的实现部分分离,使它们都可以独立地变化。2 模式组成 参与者 Abstraction 1. 定义抽象接口。 2. 拥有一个Implementor类型对象引用。 RefinedAb...原创 2016-09-11 16:12:44 · 1834 阅读 · 0 评论 -
观察者模式设计qq邮箱日历提醒 -- qq终端,qq邮箱终端,微信终端提醒
CleverCode最近在使用qq邮箱日历提醒,这个日历提醒可以通过邮箱,微信等多个终端发送提醒消息,能够及时提醒用户需要做某件事了。CleverCode刚好也在看观察者模式,所以将他用设计模式的方式表现出来。1 模式介绍 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对...原创 2016-09-05 18:15:00 · 2469 阅读 · 0 评论 -
状态模式解决灯开关状态问题
CleverCode最近在研究状态设计模式,发现状态设计模式能够解决很多设计问题。1 状态模式介绍 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。2 模式组成 2.1 上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。 2...原创 2016-09-04 13:00:28 · 3576 阅读 · 0 评论 -
设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类
1 单例模式简介 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。2 模式核心思想 1)某个类只能有一个实例; 2)它必须自行创建这个实例; 3...原创 2015-06-08 11:15:20 · 4384 阅读 · 1 评论 -
设计模式之PHP项目应用——23种设计模式目录
目 录目录说明: 1)移动到博客标题,点击超链接,可以进入到该博客。 2)本目录持续更新,关注请收藏。 3)本目录详细地址:http://blog.csdn.net/clevercode/article/details/45741843。设计模式之PHP项目应用——目录(2015-05-13)设计模式之PHP项目应用——简介...原创 2015-05-15 10:52:53 · 4418 阅读 · 0 评论 -
设计模式之PHP项目应用——策略模式设计自动驾驶系统
1 前言 关于策略模式的定义,模式组成,模式核心思想,模式架构图,程序架构等基础知识介绍。请先参考我的另外一篇博客《(三)设计模式之PHP项目应用(策略模式:商场收银系统)》:http://blog.csdn.net/clevercode/article/details/45722661。2 项目应用2.1 需求...原创 2015-05-14 17:35:48 · 3211 阅读 · 1 评论 -
设计模式之PHP项目应用——策略模式设计商场收银系统
1 策略模式简介 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 2 模式组成 1)抽象策略角色(Strategy): 策略类,通常由一个接口或者抽象类实现。 2)具体策略角色(ConcreteStrategy): 包装了相关的...原创 2015-05-14 16:30:32 · 6819 阅读 · 3 评论 -
设计模式之PHP项目应用——简单工厂模式设计计算器
1 简单工厂模式简介 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。2 模式组成1)工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。2)抽象产品(Product)角色 简单工厂模式所创建的...原创 2015-05-13 14:41:50 · 4154 阅读 · 0 评论 -
设计模式之PHP项目应用——前言
1 设计模式简介 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。2 《设计模式之PHP项目应用》写作背景 ...原创 2015-05-13 14:37:16 · 2561 阅读 · 3 评论