php有很多值得学习的地方,这里我们主要介绍php适配器模式,接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。我孩子的无数玩具中有一个简要地描述了这个两难局面:你无法合理安排一个不得其所的人。
问题
你如何避免因外部库的API改变而带来的不便?假如你写了一个库,你能否提供一种方法允许你软件的现有用户进行完美地升级,即使你已经改变了你的API?为了更好地适宜于你的需要,你应该如何改变一个对象的接口?
解决方案
立即学习“PHP免费学习笔记(深入)”;
注:控制体模式
Perl 基础入门中文教程,chm格式,讲述PERL概述、简单变量、操作符、列表和数组变量、文件读写、模式匹配、控制结构、子程序、关联数组/哈希表、格式化输出、文件系统、引用、面向对象、包和模块等知识点。适合初学者阅读和了解Perl脚本语言。
0
PHP适配器模式是控制体模式的最新范例。一个适配器(Adapter)的结构类似于代理服务器(Proxy)和修饰器(Decorator),而它们的不同之处在于,适配器(Adapter)的目的是改变封装类的接口,代理服务器(Proxy)和修饰器(Decorator)则是保持接口不变。
样本代码
让我们看看当API改变时,如何保护应用程序不受影响。假设你费尽心思寻找合适的库,最后终于找到了HwLib,一个(假设的)被设计用来发送信息的代码集。以下为引用的内容:
<OL class=dp-xml><LI class=alt><SPAN><SPAN>// PHP4 </SPAN></SPAN><LI class=""><SPAN>/** </SPAN><LI class=alt><SPAN>* the HwLib helps programmers everywhere write their first program </SPAN><LI class=""><SPAN>* @package HelloWorld </SPAN><LI class=alt><SPAN>* @version 1 </SPAN><LI class=""><SPAN>*/ </SPAN><LI class=alt><SPAN>class HwLib { </SPAN><LI class=""><SPAN>/** </SPAN><LI class=alt><SPAN>* Say “Hello” </SPAN><LI class=""><SPAN>* @deprec this function is going away in the future </SPAN><LI class=alt><SPAN>* @return string </SPAN><LI class=""><SPAN>*/ </SPAN><LI class=alt><SPAN>function hello() { </SPAN><LI class=""><SPAN>return ‘Hello ‘; </SPAN><LI class=alt><SPAN>} </SPAN><LI class=""><SPAN>/** </SPAN><LI class=alt><SPAN>* target audience </SPAN><LI class=""><SPAN>* @return string </SPAN><LI class=alt><SPAN>*/ </SPAN><LI class=""><SPAN>function world() { </SPAN><LI class=alt><SPAN>return ‘World!’; </SPAN><LI class=""><SPAN>} </SPAN><LI class=alt><SPAN>} </SPAN></LI></OL>下面是库运行的范例:
<OL class=dp-xml><LI class=alt><SPAN><SPAN>$</SPAN><SPAN class=attribute><FONT color=#ff0000>hw</FONT></SPAN><SPAN> =& new HwLib; </SPAN></SPAN><LI class=""><SPAN>echo $hw-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>hello(), $hw-</SPAN><SPAN class=tag><STRONG><FONT color=#006699>></FONT></STRONG></SPAN><SPAN>world(); </SPAN></SPAN></LI></OL>
HwLib有完备的说明文档。在文档中作者已经明确指出hello()方法会在未来的版本中不被支持(甚至淘汰)。接下来,现在假设第二版的HwLib已经发布。一个全新的greet()方法代替了hello()。下面是这个库的新版本(注释已被抽取掉):
<OL class=dp-xml><LI class=alt><SPAN><SPAN>// version 2 </SPAN></SPAN><LI class=""><SPAN>class HwLib { </SPAN><LI class=alt><SPAN>function greet() { </SPAN><LI class=""><SPAN>return ‘Greetings and Salutations ‘; </SPAN><LI class=alt><SPAN>} </SPAN><LI class=""><SPAN>function world() { </SPAN><LI class=alt><SPAN>return ‘World!’; </SPAN><LI class=""><SPAN>} </SPAN></LI></OL>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号