您的位置: 首页 > 技术文档 > 网络编程 > php设计模式介绍之策略模式
php设计模式介绍之迭代器模式 回到列表 php设计模式介绍之伪对象模式
 php设计模式介绍之策略模式

作者:hosander 时间: 2008-07-24 文档类型:翻译 来自:

第 1 页 php设计模式介绍之策略模式 [1]
第 2 页 php设计模式介绍之策略模式 [2]
第 3 页 php设计模式介绍之策略模式 [3]
第 4 页 php设计模式介绍之策略模式 [4]
第 5 页 php设计模式介绍之策略模式 [5]

上文:《PHP设计模式介绍》第六章 伪对象模式

《PHP设计模式介绍》第七章 策略模式

在编写面向对象的代码的时,有些时候你需要一个能够自己根据不同的条件来引入不同的操作对象实例。例如,一个菜单功能能够根据用户的“皮肤”首选项来决定是否采用水平的还是垂直的排列形式,或者一个计费系统可以自行根据用户的收货地址来决定税率。

一般来讲,一个控制菜单的对象实例包括了add(), delete(), 和 replace()等菜单元素;并通过set()进行配置,用render()来管理显示模式。无论你想生成什么样子的菜单,你都可以用同一个对象类来处理。不同菜单的对象实例只是一些方式函数的运算规则不同罢了,至少在刚才的例子里面render()函数是不同的。

但是如果你需要增加菜单的显示模式种类,或者你需要根据用户的国家、省份等信息来判断菜单排列的顺序的时候,该怎么做呢?而且如果有许多的方式函数都是经常变化的,那么简单的类封装将变得复杂、难易理解和升级的。

问题

怎么轻松地改变对象实例的执行过程,因而在代码执行的时候动态地改变执行过程?一旦实现了这个功能,如果去编写这样的类定义从而让维护和升级变得非常简单呢?

解决办法

当一个类封装了多个操作的时候,对象实例可以动态地选择这些操作来进行,可以用策略模式来把对象本身和运算规则区分开来。或者,更简单的处理是类里面定义的方式函数用case语句来进行控制。当然更简单的方法是使用策略模式。

策略模式功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。

就在编程领域之外,有许多例子是关于策略模式的。如果我需要在清晨从家里去上班,我可以有几个策略可以考虑:我可以开车,乘坐公交车,走路,汽车或者甚至是搭乘直升飞机。每个策略都可以得到相同的结果,但是它们使用了不同的资源。选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。一个很好的策略也许在第二天就不能再被使用的,所以策略的选择是相对的。

你已经在前面的工厂模式章节看到了和策略模式相似的例子:因为不同特性的费用计算方式不同,所以Monopoly游戏的框架使用了许多相似的特性类,但是因为费用的计算不是从类本身获得,所以这个费用计算相对来说是一个TemplateMethod 设计模式。

出处:
责任编辑:bluehearts

上一页 下一页 php设计模式介绍之策略模式 [2]

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
php设计模式介绍之迭代器模式
php设计模式介绍之伪对象模式
php设计模式介绍之注册模式
php设计模式介绍之单件模式
flash+php+mysql简单留言本教程
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
疯狂的程序员 第五十回
疯狂的程序员 第四十九回
疯狂的程序员 第四十八回
疯狂的程序员 第四十七回
疯狂的程序员 第四十六回
疯狂的程序员 第四十五回
疯狂的程序员 第四十四回
疯狂的程序员 第四十三回
疯狂的程序员 第四十二回
疯狂的程序员 第四十一回
栏目最新 栏目最新列表
火星人的耳机
公司正式宣布创业失败
用corelDEAW 12打造唇膏
二行代码解决全部网页木马
一行代码解决iframe挂马
Photoshop制作星空爆炸效果
CorelDraw 12打造休闲裤
Firework如何画特殊的切角图形
Firework打造韩式风格的手提袋
flash实例:打造佛光效果
>> 分页 首页 前页 后页 尾页 页次:1/51个记录/页 转到 页 共5个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
大师之路--Photoshop 完全解析
《超越CSS》新书上市
Don't Make Me Think 第2版
HTML与CSS入门经典(第7版)
《FLASH MX2004网站开发精粹》
《CSS入门经典》
《设计师谈网页设计思维》
作品集 更多内容

个人意识 天津奔唐 大学时做的矢量图 几个MSN表情 数据库管理界面 用户体验良好的小站 画册封面 zhaopindiy