在OOD时,我们通常要搞清楚,我们的类与类之间的关系。通常有以下几种: 1.继承 继承可能是我们最容易理解的类关系了,它可以用“is a”来描述。通常表现是类和类(抽象类)的继承、接口和接口的继承、以及类对接口的实现。比如我们现在有个抽象类DB,MysqlDB和SqlliteDB分别使用extends关键字继承DB类,这样不仅MysqlDB和SqlliteDB要实现DB类定义好的抽象方法,而且还能继承DB中的已存在的方法。我们可以说MysqlDB是一种DB。这种关系即父子关系,有其父必有其子,但是子可以“青出于蓝而胜于蓝”。注意,其实这包含两种关系,即泛化关系及实现关系,类和类、接口和接口之间是泛化关系,而类和接口只是实现关系了。 2.依赖 两个独立的类,但其中一个类使用另外一个类,比如第二个类产生了第一个类的局部变量,第二个类作为第一个类方法的参数等等。也就是说,第一个类需要第二个类的帮组,第一个类使用了第二个类才能正确工作。比如在MVC模式中,我们的ACTION需要依赖MODEL来操作获取或者更新数据。依赖跟被依赖只是一个使用关系,除此之外,别无其它。 3.关联 两个独立的类,当一个类与另外一个类存在特定的对应关系时,这就是一种关联关系。通常表现为第一个类把第二个类的实例当中自己的一个属性。比如一个博客系统中,一篇博文对应特定的博主,而博主则有一些特定的博文。注意,这两个类直接是处在同一层次上面的。 4.聚合 当类和类直接的关系表现为整体和部分的时候,它可能就是聚合关系了。聚合最主要体现在“聚”字上面。比如学生以及老师聚在一起形成了一个班级。但是,有聚就有散,很可能这个班级过一年就散伙了,但是这些班的全部或者部分老师和学生重新聚在一起形成了另外一个班级。注意,这个班级并不会因为散伙而导致老师或者学生都不存在了。 5.组合 组合是一种更强关系的聚合。组合不仅仅包含全部和整体的关系,而且主体还可以控制另一主体的生命周期。比如人这个主体,他是有头部,身躯和下肢组成的,一旦人没了,头部,身躯和下肢也将不存在了。 各个关系直接的区别 从关系的强弱程度看,依次是依赖 < 关联 < 聚合 < 组合。 依赖和关联的区别:依赖是一种较弱的关联。具体体现在代码上面就是:关联关系中,被关联的类是关联类的属性,而在依赖关系中,被依赖者仅仅是依赖者的局部变量,方法的参数而已。 关联和聚合的区别:聚合有整体和部分的关系,而关联没有,关联中的类是在同一级别上的。 聚合和组合:他们都有整体和部分的关系,但是在组合中,类具有一样的生命周期,即整体类消失了,部分类也就不存在了。
一.XML-RPC是什么? XML-RPC是Userland Software公司设计的一种格式:是一种使用HTTP协议传输XML格式文件来获取远程程序调用(Remote Procedure Call)的传输方式。官方网站是www.xmlrpc.com。 在http://phpxmlrpc.sourceforge.net/上面有个PHP XML-RPC的框架(类集合)用于使用PHP语言来写XML-RPC客户端和服务端。现在的稳定发行版本是2.2,下载地址是http://sourceforge.net/projects/phpxmlrpc/files/phpxmlrpc/2.2.2/xmlrpc-2.2.2.tar.gz/download。 另外你在www.xmlrpc.com上面也可以找到其他s语言的XML-RPC列表,例如Perl、Python。 这篇文章将介绍XML-RPC for PHP的类库使用。 二.系统运行要求 该类库的设计目标是可扩展性和向后兼容性。因此,它支持大部分的现有PHP版本。最低需要的PHP版本是4.2。该类库提供一个兼容层来支持PHP 4.0.5和4.1。当然官方建议是使用PHP 5.0或者更高版本。 注意,如果你要用SSL或者HTTP 1.1跟远程服务器通信,必须把“CURL”扩展编译进PHP中。 另外,PHP自带的原生“xmlrpc”扩展跟这里介绍的XML-RPC类库不是同一个东西,所以并不需要将其编译进PHP中。 三.相关类介绍 1.xmlrpcval 在XML-RPC中有六种基本类型和两种复合类型,基本类型是:int、boolean、string、double、dateTime.iso8601、base6,复合类型是:array、struct。Xmlrpcval的作用就是把PHP中类型转换成这几种类型放入XML-RPC中,以便传输。 new xmlrpcval(123,”int”); //将123作为XML-RPC int类型 new xmlrpcval(123,”string”); //将123作为XML-RPC string类型 new xmlrpcval(123);//如果没有第二个参数,系统默认将其作为string类型 new xmlrpcval( //XML-RPC array类型 array( new xmlrpcval(“string1″), new xmlrpcval(“string2″), new xmlrpcval(“string3″),),”array”); new xmlrpcval( //XML-RPC struct类型 array( “name”=>new xmlrpcval(“codebean”,”string”), “age”=>new xmlrpcval(34,”int”), “address”=>new xmlrpcval( array( “street”=>new xmlrpcva(“xiaoyinxilu”,”string”), “city”=>new xmlrpcval(“beijing”,”string”) ), “struct”)), “struct”); 复制代码 相关方法: [...]