快速业务通道

php教程:php设计模式介绍之规范模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-15

上文:《PHP设计模式介绍》第九章 观测模式

《PHP设计模式介绍》第十章 规范模式

在一个应用软件的成型过程中,一些意想不到的商业逻辑到处出现。比如,基于价格的考虑,这个任务必须减少项目;而那个任务也因为销售税而必须选择合适的比率;而其它的任务也必须因为其他的特别条件而终止。一些商业规则是简单的,只需要不到一两个布尔比较关系就够了,然而它的规则可能需要费时的估计,需要查询数据库或者用户输入数据来引导。

通过书写代码可以把抽象(比如一条商业规则)转化为具体可见的东西。但是抽象物(比如购物方式,税率,或者计算海运费等等)都有其进化的方式,而且这些改变很容易难倒一个不幸运的开发人员。为了保证安全可靠——到目前为止你在这本书所看到的——尽可能的分离封装那些容易改变的模块是个很完美的想法。而且,这的确也一个明智的应对商业规则的策略。

问题描述

有没有明确的方式来封装商业逻辑呢?有没有一个容易改写和重用的技术呢?

解决方案

规范模式是为验证和选择而开发的:

确认一个特殊的对象是否满足一定的标准

从集合中选择出满足给定标准的元素。

规范模式能让你有效的组织这些标准,并在你的应用程序中灵活的使用他们。

代码重构技术已经激发你的兴趣,你决定使用它来提升代码的清晰度和重用性。规范模式通过系统化进一步的深化了这一步,它系统把这个结构分解成一个个单独的对象,这些对象能够很方便的插入到你的应用程序的合适地方。很多情况下,在你的应用程序里,规范对象是参数化的,而且经常被组合在一起来构建复杂的合乎逻辑的表达式。

相关知识

Eric Evans 和 Martin Fowler 发表过一篇关于规范模型的文章,地址是:http://www.martinfowler.com/apsupp/spec.pdf

这个模式在Eric Evans的书本《动态驱动设计》(“Domain Driven Design”)的第224到273页有详细的介绍。

为了合理的全面覆盖这个模式,这章被组织成合乎逻辑的三部分。第一部分通过一个纯粹的实例来说明基本的模式概念。(Evans 和 Fowler 把这个称为为“硬编码规范Hard Coded Specification”)。接下来的部分演示了如何构建一个参数化规范模型,它提供了一个更加动态和灵活的框架来实现规范模式(或者因此而称为“参数化规范”)的重用。最后一部分,我们开发了一个“方案工厂”(Policy Factory),它把许多规范对象集中成一个易于使用的包(package)。

Traveling to War

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号