PHP设计模式
PHP设计模式
老码农zhuli
自娱自乐的代码人!GIT:https://github.com/zhuli
展开
-
PHP设计模式系列 - 策略模式
策略模式: 策略模式设计帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法。 使用场景: 例如有一个CD类,我们类存储了CD的信息。原先的时候,我们在CD类中直接调用getCD方法给出XML的结果随着业务扩展,需求方提出需要JSON数据格式输出这个时候我们引进了策略模式,可以让使用方根据需求自由选择是输出XML还是JSON 代原创 2012-07-18 18:34:55 · 4590 阅读 · 2 评论 -
PHP设计模式系列 - 单例
单例模式 通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。 使用场景 例如数据库实例,一般都会走单例模式。单例模式可以减少类的实例化 代码:来源InitPHP框架,先检测类有没被实例化,实例化了就使用已经存放在静态变量中的对象实例,没有则实例化并将对象保存起来。 /** * 框架核心加载-框架的所有类都需要通过该函原创 2012-07-17 16:05:38 · 4240 阅读 · 0 评论 -
PHP设计模式系列 - 观察者模式
观察者模式 观察者设计模式能够更便利创建和查看目标对象状态的对象,并且提供和核心对象非耦合的置顶功能性。观察者设计模式非常常用,在一般复杂的WEB系统中,观察者模式可以帮你减轻代码设计的压力,降低代码耦合。 场景设计 设计一个订单类 订单创建完成后,会做各种动作,比如发送EMAIL,或者改变订单状态等等。 原始的方法,是将这些操作都写在create函数原创 2012-07-02 11:43:59 · 5120 阅读 · 3 评论 -
PHP设计模式系列 - 中介者模式
中介者模式 中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接相互的情况下传送或者调解对这些对象的集合的修改。一般处理具有类似属性,需要保持同步的非耦合对象时,最佳的做法就是中介者模式。PHP中不是特别常用的设计模式。 设计场景: 我们有一个CD类和一个MP3类,两个类的结构相似。我们需要在CD类更新的时候,同步更新MP3类。传统的做法就是在CD类原创 2012-06-27 13:16:43 · 3344 阅读 · 1 评论 -
PHP设计模式系列 - 迭代器
PHP迭代器: 可帮助构造特定的对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据。(不是特别常用,在PHP中) 使用场景: 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.支持对聚合对象的多种遍历。 3.为遍历不同的聚合结构提供一个统一的接口(即,多态迭代)。 PHP代码实现: <?php //迭代器:可原创 2012-06-26 16:55:18 · 2539 阅读 · 0 评论 -
PHP设计模式系列 - 解释器模式
解释器模式 解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作。解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模。 代码: <?php //解释器模式 用于分析一个实体的关键元素,并且针对每个元素提供自己的解释或相应动作 //解释器模式非常常用,比如PHP的模板引擎 就是非常常见的一种解释器模式 class temp原创 2012-06-25 13:57:29 · 3084 阅读 · 0 评论 -
PHP设计模式系列 - 工厂模式
工厂模式 提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤。 工厂模式 实际上就是建立一个统一的类实例化的函数接口。统一调用,统一控制。 工厂模式是php项目开发中,最常用的设计模式,一般会配合单例模式一起使用,来加载php类库中的类。 应用场景 我们拥有一个Json类,String类,Xml类。如果我们不使用工厂方式实例化这些类,则需要每一原创 2012-06-23 10:53:38 · 4037 阅读 · 0 评论 -
PHP设计模式系列 - 外观模式
外观模式 通过在必需的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了调用对象的复杂性。 外观设计模式和建造者模式非常相似,建造者模式一般是简化对象的调用的复杂性,外观模式一般是简化含有很多逻辑步骤和方法调用的复杂性。 应用场景 设计一个User类,里面有getUser获取用户信息接口在使用getUser这个接口的时候,需要设置用户的用户名和用户年龄所以在正常情况下原创 2012-06-23 10:23:11 · 2731 阅读 · 0 评论 -
PHP设计模式系列 - 委托模式
委托模式 通过分配或委托其他对象,委托设计模式能够去除核心对象中的判决和复杂的功能性。 应用场景 设计了一个cd类,类中有mp3播放模式,和mp4播放模式改进前,使用cd类的播放模式,需要在实例化的类中去判断选择什么方式的播放模式改进后,播放模式当做一个参数传入playList函数中,就自动能找到对应需要播放的方法。 代码:cd类,未改进之前,选择播放模式是一种原创 2012-06-22 13:12:56 · 3787 阅读 · 6 评论 -
PHP设计模式系列 - 装饰器
什么是装饰器 装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器设 应用场景 设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息通过addUser来添加用户名getUserList方法将打印出用户名信息现在需要将添加的用户信息变成大写的,我们需要不改变原先的类,并且不改变原先的数据结构我们设计了一个UserIn原创 2012-06-22 11:35:02 · 4435 阅读 · 1 评论 -
PHP设计模式系列 - 数据访问对象模式
数据访问对象模式 数据访问对象模式描述了如何创建透明访问数据源的对象。 场景设计 设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法在实际使用的过程中,继承BaseDao,就可以直接调用基类的数据库操作方法 代码:BaseDao 数据库操作基类 <?php //数据访问对象模式 //将数据库访问层脱离出来 作为原创 2012-06-20 10:13:31 · 2866 阅读 · 1 评论 -
PHP设计模式系列 - 建造者模式
什么是建造者模式 建造者模式主要是为了消除其它对象复杂的创建过程。 设计场景 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,金钱等信息,才能获得用户具体的信息结果。 创建一个UserInfoBuilder 用户建造者类,这个类,将UserInfo复杂的创建姓名,年龄,金钱等操作封装起来,简化用户类的创建过程 代码:UserI原创 2012-06-19 19:23:46 · 2386 阅读 · 0 评论 -
PHP设计模式系列 - 适配器
什么是适配器: 适配器设计模式只是将某个对象的接口适配为另一个对象所期望的接口。 设计情景: 假如我们原始的有一个UserInfo的类,提供用户信息的类,早起设计该类的时候,只实现了一个getUserName获取用户名的方法。我们的MyOldObject类中,将从UserInfo这个类中获取用户信息,并且输出用户名随着时间的推移,我们旧的UserInfo这个类只原创 2012-06-19 12:30:05 · 2971 阅读 · 4 评论