设计模式
文章平均质量分 93
uuleaf
这个作者很懒,什么都没留下…
展开
-
Php-SPL库中的迭代器类详解
SPL提供了多个迭代器类,分别提供了迭代访问、过滤数据、缓存结果、控制分页等功能。,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类。下面其中一些迭代器类是需要php5.4,另外一些如SearhIteratoer类在最新的php版本中已经去除1.ArrayIteratoer从PHP数组创建一个迭代器,当其和IteratorAggregate类一起使用时,免去了直接实现Iterat原创 2012-06-05 21:42:34 · 2708 阅读 · 0 评论 -
Php设计模式之【策略模式Strategy Pattern】
【案例】黑枣游戏公司开发小鸡快跑的游戏,小鸡从鸡窝开跑,狂奔100米后到达安全地带。这500米中,小鸡可以使用辅助工具,不限于鸡爪、滑板、自行车、火箭运输。【分析OOA】小鸡快跑游戏是使用策略模式的一个典型实例,我们分析一下小鸡快跑游戏的特征1. 定义了一系列的算法。小鸡的狂奔包括鸡爪、滑板、自行车、火箭运输多个方式。2. 这些算法有相同的结果或实现,它们还可以相互替换。无论使原创 2012-05-21 15:01:09 · 1146 阅读 · 0 评论 -
Php设计模式之【迭代器模式Iterator Pattern】
概述迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。案例黑枣电视公司的在生产的电视机,使用遥控器[后一个]和[前一个]按钮调节频道。当按下[后一个]按钮时,将切换到下一个预置的频道。想象一下在陌生的城市中的旅店中看电视。当改变频道时,重要的不是几频道,而是节目原创 2012-05-22 11:30:36 · 2584 阅读 · 0 评论 -
Php设计模式之【组合模式Composite Pattern】
【概述】组合模式是将一系列对象组合成树形结构用来表示整体和部分之间的关系,组合模式的主要目的是达到,访问组合对象和访问单个对象具有一致性。这里的组合对象比较特殊,本身他可以是由其他的对象组合而成,同时,这个组合对象又可以是组成更复杂对象的一个部分。我们来举个例子来说明吧,可能更直观【案例】黑枣图书公司的想把图书分类以目录的形式打印出来【OOA】组合模式将对象组合成树形结构以表示原创 2012-06-07 18:43:33 · 1867 阅读 · 1 评论 -
Php设计模式之【适配器模式 Adapter Pattern】
【案例】黑枣玩具公司专门生产玩具,生产的玩具不限于狗、猫、狮子,鱼等动物。每个玩具都可以进行“张嘴”与“闭嘴”操作,分别调用了openMouth与closeMouth方法。代码实现>abstract class Toy{ public abstract function openMouth(); public abstract function closeMou原创 2012-05-19 16:25:25 · 1450 阅读 · 0 评论 -
Php设计模式之【命令模式Command Pattern】
【案例】黑枣玩具公司专门生产玩具,生产的玩具不限于狗、猫、狮子等四肢动物。每个玩具身上有两个按钮,分别支持两个操作——“张嘴”与“闭嘴”。代码实现><?php/** * 所有玩具需要实现的动作接口 */interface Toy{ /** * 玩具张嘴动作 * @abstract * @return mixed */原创 2012-05-19 12:25:56 · 1308 阅读 · 1 评论 -
Php设计模式之工厂模式(三)【抽象工厂模式 AbstractFactory】
【案例】承接上一篇工厂方法模式。由于市场需求变化,客户对猪产生兴趣,黑枣克隆公司不能不扩张生产线,以生产猪。【分析OOA】工厂方法模式为狗族提供了统一的创建接口。当有多个产品族时,可以使用抽象工厂模式。【设计OOD】说明>看看抽象工厂模式的各个角色(和工厂方法的如出一辙):1、抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对原创 2012-05-16 15:18:32 · 1169 阅读 · 1 评论 -
Php设计模式之【单例模式Single Pattern】
【案例】黑枣防克隆公司是生产了一只超级狗。因这只超级狗因为威力巨大,两个就足以毁灭宇宙。想方设法防止其被克隆。【分析OOA】单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。【设计OOD】说明>1. SingletonDog的__construct方法设为私有,以防止new实例化2原创 2012-05-18 11:37:42 · 861 阅读 · 0 评论 -
Php设计模式之工厂模式(二)【工厂方法模式 Factory Method】
【案例】承接上一篇简单工厂模式。黑枣克隆公司在初始发展阶段使用简单工厂模式来生产克隆狗,狗的分类方式局限于按颜色分类。由于市场需求变化,客户对同一颜色狗有了体型大小要求,分为大型狗及小型狗两类。【分析OOA】如果我是黑枣克隆公司老板,我可能要开设分厂。使用大型狗工厂专门生产大型狗,小型狗工厂专门生产小型狗。其实软件工程师也会去这样实现。工厂方法模式使用继承自抽象工厂角色的多个子类来代替原创 2012-05-16 15:14:35 · 1435 阅读 · 1 评论 -
Php设计模式之【模板方法模式Template Method Pattern 】
【案例:确定玩具的购买价格 】黑枣玩具公司的产品五花八门,不同的产品价格计算方式也不一样。所以对价格计算系统的要求非常高。价格因素主要包括以下几点。1. 不同的产品有不同的增值税ValueAddTax、关税TariffTax2. 还有一些玩具需要交其它的税类。如果是塑料玩具,还可能要缴纳环境污染税,其它税还有印花税、资源等,统称为OtherTax这些费用最终会加入最后的购买价格原创 2012-05-21 21:15:39 · 1275 阅读 · 0 评论 -
Php设计模式之观察者模式
案例黑枣快运公司的快递系统把公司每一笔新的快递单通知到快递员的手持终端上实现代码>class expressData{ public $info; /** * 新快递单信息(此方法为简单实现,实际可能为按照快递单号从数据库查询) * @return array */ public function newInfo()原创 2012-05-13 13:53:50 · 2334 阅读 · 0 评论 -
Php-SPL库中的观察者模式接口详解
PHP-SPL标准库中实现了观察者模式接口,PHP内置提供了两个接口来供外部应用区实现这个模式。文档>http://www.php.net/manual/zh/splobserver.update.php SplSubject 接口SplSubject代表着被观察的对象,其结构:interface SplSubject{//添加(注册)一个观察者public functio原创 2012-05-14 19:57:59 · 1944 阅读 · 0 评论 -
Php设计模式之装饰者模式
案例黑枣芭比公司是主营芭比娃娃游戏的公司,主要生产芭比娃娃,信息记录了一个芭比娃娃装备及美丽星级指数,可以看到,一个小眼睛扁鼻子阔嘴的芭比娃娃值0个指数。实现代码>class Barbie{ protected $eye = 'small'; protected $nose = 'flat'; protected $mouth = 'wide';原创 2012-05-15 13:45:19 · 1557 阅读 · 0 评论 -
Php设计模式之工厂模式(一)简单工厂模式
案例黑枣克隆公司是专门批量生产克隆狗的一家企业。当克隆出一只黑狗的实现代码如下实现代码>class DogGener{ public function create($color){ if($color == 'black'){ $dog = new BlackDog(); $dog->shout();原创 2012-05-16 15:11:11 · 1170 阅读 · 0 评论 -
Php-SPL库中的迭代器接口详解
SPL库中的迭代器接口SPL提供了6个迭代器接口,如下表Traversable遍历接口(检测一个类是否可以使用 foreach 进行遍历的接口)Iterator迭代器接口(可在内部迭代自己的外部迭代器或类的接口)IteratorAggregate聚合式迭代器接口(创建外部迭代器的接口)OuterIterator迭代器嵌套接原创 2012-05-22 16:00:50 · 2234 阅读 · 0 评论 -
Php设计模式之【外观模式Facade Pattern】
【案例】黑枣设计公司开发一套流程图开发工具。使用这套开发工具在画一个箭头时,用户先画一个三角,再画一个坚杠就可以了。不过用户反馈画箭头太麻烦,希望能精简操作。class base{ public function draw($char = '*', $num = 1) { echo str_repeat($char, $num); }}原创 2012-05-21 11:31:51 · 918 阅读 · 0 评论