日期:2010-09-19 浏览次数:20595 次
《PHP设计模式引见》 导言
当你在不断的试图从你的使用程序中发现新的特征时,你能否发现你提出的处理方法和一些以前你曾经实现的东西是如此的类似呢?如果你是一个程序员(即便你才 开始很短的时间),你都可能回答“是”。这看起来就是你使用了一些以前的代码来处理软件开发过程中新发现的问题了。你可能曾经认识到:你的处理方法是基本 原理,是一个不只仅是你而且是所有专业开发者都能广泛反复使用的方法。
理想上,许多程序问题都不断的反复的遇到,而且许多用来处理这些问题的基本方法(或者说是设计模式)都曾经浮现出来。设计模式就是一个教你如何利用真实可靠的设计来组织你的代码的模板。
设计模式历史
“设计模式”这个术语最后被设计用于建筑学领域。Christopher Alexander 在他1977的著作“A Pattern Language :Towns/Building/Construction”里面描述了一些常见的建筑学设计问题,并解释了如何用这些已有的,著名的模式集合来开始全新 的无效的设计。Alexander的观点被很好的转化到软件开发上来,并且长期的合意的用原有的组件来结构新的处理方案。
所有的设计模式都有一些常用的特性:一个标识(a name),一个问题陈述(a problem statement)和一个处理方案(a solution)。
一个模式是处理特定问题的无效方法。一个设计模式不是一个库(能在你的项目中直接包含和使用的代码库)而是一个用来组织你的代码的模板。理想上,一个代码库和一个设计模式在使用上是有很多不同的。
比如,你从店铺里面买的一件衬衫是一个代码库,它的颜色,款式和大小都由设计师和厂商决定,但它满足了你的需求。
然而,如果店里面没有什么衣服适合你,那你就能本人创建本人的衬衫(设计它的外形,选择布料,然后裁缝在一同)。但是如果你不是一个裁缝,你可能会发现自 己很容易的去找一个合适的模式然后按着这个模式去设计本人的衬衫。使用一个模型,你可以在更少的时间内得到一个熟练设计的衬衫。
回到讨论软件上来,一个数据提取层或者一个CMS(content management system)就是一个库——它是先前设计好而且曾经编码好了的,如果它能精确的满足你的需求那它就是一个好的选择。但如果你正在读这本书,可能你会发现 库存的(原有的)处理方案并不是总是对你无效。至今你知道什么是你所要的,而且你能够实现它,你仅仅需求一个模型来引导你。
最后一个想法:就象一个裁缝模型,一个设计本身而言是没有什么用途的。毕竟,你不可能穿一个服装模型——它仅仅是由很薄的纸拼凑起来的。类似的,一个软件设计模型也仅仅只是一个引导。它必须依据程序设计言语和你的使用程序的特点和要求而特别的设计。
本书的目标
本书的目的不是为了全面的引见各品种别的软件设计模式,也不是为了发展一个新的设计模式或者术语,而是为了突出引见一些已有的著名的设计模式。这本书的 独特之处在于引见了一些我认为对开发动态WEB使用程序很有协助的设计模式,而且用PHP言语显示了如何实现这些设计模式。
面对对象编程OOP
这本书一个优点就是所有的观点都是基于OOP这种很自然的设计模式,并且用OOP来实现。
如果你不熟悉OOP,有很多相关的资源(书籍,网站,杂志,上课等等)来协助你更好的了解它。大多数OOP材料都赞誉它的好处——代码重用,代码健壮,代 码封装,多态和可扩展性,当然所有的这些也是非常重要和有用的。然而,我认为OOP最次要的优点是它如何激励你亲手将问题分解成易处理的模块。清晰的设计 和实现,分解成小的模块,这样你的代码能够得到愈加彻底的测试而且也愈加容易理解和维护。
读者技能要求
这本书假定你曾经能够流畅的使用PHP了。特别地,这本书假设你曾经了解了PHP和PHP语法的运作知识而且懂得用OOP执行PHP代码的基本原理。这本书不是一本PHP编程的引见书,也不是为了引见PHP的OOP编程的。
由于不是所有的OOP开发者都使用相反的术语,当有新的术语被引入时,我都将在注释中或者工具条中定义。