正在加载图片...
hinaopub.com 第4章cCOM.CoM+和sp441 下载 本书不可能对所遇到的每个问题都给出一套实际的接口设计大纲,但设计得好的接口有 一些共同特征: ·确保接口对使用者有用。COM有定义接口的能力,这些接口在语言上或者应用程序上 是不友好的,也就是说它们不能运行。当把COM设计成一种二进制标准时,一些语言 就比另一些语言功能更强,就像一些浏览器比其他浏览器功能更多一样。如果COM限 制这些语言,就不能得到广泛地使用,因此,必须认真考虑接口的性能。例如,一个主 要用于像ASP这样的脚本语言环境的组件,应当使用 Variant作为参数,并且参数能够输 入、修改和输出。这是脚本引擎的一个特征。因此,必须确保接口遵守这些原则并能在 这样的环境中正常工作 ·接口名称(或类模块)和方法名称采用描述性的名称。调用一个叫 IDoSomething接口和使 用一个叫Dolt的方法没什么意义,这些名称应该有意义,应尽可能说明它在客户的问题 中所完成的功能。 ·方法应当很好地要素化,逻辑相关,并不要有太多的方法。如果你已经有一个 IChannelselector的接口,它只应当含有与频道转换有关的方法。例如,如果需要 Fine Tune channel的方法,它应该包含在 I ChannelTuner接口中 属性相同。接口的属性应当与客户感兴趣的信息类型一致。 ·接口应当是强类型的。像VB和C++这些语言都是强类型的,也就是说我们所定义的变 量属于某一种类型,它只会有这种类型的数据,例如一个数(Long型或 Integer型),如果 有人想分配给该变量一个 String型数据,这时,编译器就会产生错误。ASP只支持像 Ⅴ SCript这样的弱类型脚本语言,在 SCript中,所有的变量都被定义为 Variant型,这 种类型的变量可以含有任何类型的数据。把接口定义为强类型的好处是使用时简单明了, 可以看到所使用的参数的类型,而不必猜测一个方法能处理什么数据类型。 ·喜欢使用自己的接口。这是一个全球所有成功的公司所遵循的金科玉律:使用自己的接 口,或者至少应该确信所使用的接口是个好接口。 4.接口的不变性 旦设计好一个COM接口,并且通过某些形式向客户发布了,这个接口就应当被认为是 不可变的,不能对其做任何可能影响其二进制表现的改动。 看一下 I Volume Control接口的描述,其中有 Increase Volume方法和 Decrease volume方法 如果发布了这个组件,而且人们把这个遥控组件用在他们的应用程序中,并使用了我们的接 口及其所有方法。如果我们再决定去掉 Decrease volume方法会怎么样呢?显然,那些应用程 序将被严重破坏,或者将会有一些非常烦人的相关问题,如果改变一个方法参数的数量或者 类型,也可能会产生同样的问题 因此,有一些原则需要遵守 在对一个接口满意前,不要发表他。 如果实在需要改变一个接口,不应修改已存在的这个接口,而是为所需的扩展功能再创 建一个接口。这当然要求客户类型支持多重接口,但ASP目前不支持多重接口 个接口一旦发布,就不能改变其中的任何一部分,这包括方法的顺序、参数类型等。 如果改变了一个已经存在的接口(我们推荐不要这样),应重新编译所有使用该接口的客 户应用程序。就像我们已经讲过的,使用早期绑定的客户将会把接口的设计硬编码为本书不可能对所遇到的每个问题都给出一套实际的接口设计大纲,但设计得好的接口有 一些共同特征: • 确保接口对使用者有用。 C O M有定义接口的能力,这些接口在语言上或者应用程序上 是不友好的,也就是说它们不能运行。当把 C O M设计成一种二进制标准时,一些语言 就比另一些语言功能更强,就像一些浏览器比其他浏览器功能更多一样。如果 C O M限 制这些语言,就不能得到广泛地使用,因此,必须认真考虑接口的性能。例如,一个主 要用于像A S P这样的脚本语言环境的组件,应当使用 Va r i a n t作为参数,并且参数能够输 入、修改和输出。这是脚本引擎的一个特征。因此,必须确保接口遵守这些原则并能在 这样的环境中正常工作。 • 接口名称(或类模块)和方法名称采用描述性的名称。调用一个叫 I D o S o m e t h i n g接口和使 用一个叫D o I t的方法没什么意义,这些名称应该有意义,应尽可能说明它在客户的问题 中所完成的功能。 • 方法应当很好地要素化,逻辑相关,并不要有太多的方法。如果你已经有一个 ICh a n n e l S e l e c t o r的接口,它只应当含有与频道转换有关的方法。例如,如果需要一个 F i n e Tu n e C h a n n e l的方法,它应该包含在I C h a n n e l Tu n e r接口中。 • 属性相同。接口的属性应当与客户感兴趣的信息类型一致。 • 接口应当是强类型的。像 V B和C + +这些语言都是强类型的,也就是说我们所定义的变 量属于某一种类型,它只会有这种类型的数据,例如一个数 ( L o n g型或I n t e g e r型),如果 有人想分配给该变量一个 S t r i n g型数据,这时,编译器就会产生错误。 A S P只支持像 V B S c r i p t这样的弱类型脚本语言,在 V B S c r i p t中,所有的变量都被定义为 Va r i a n t型,这 种类型的变量可以含有任何类型的数据。把接口定义为强类型的好处是使用时简单明了, 可以看到所使用的参数的类型,而不必猜测一个方法能处理什么数据类型。 • 喜欢使用自己的接口。这是一个全球所有成功的公司所遵循的金科玉律:使用自己的接 口,或者至少应该确信所使用的接口是个好接口。 4. 接口的不变性 一旦设计好一个 C O M接口,并且通过某些形式向客户发布了,这个接口就应当被认为是 不可变的,不能对其做任何可能影响其二进制表现的改动。 看一下I Vo l u m e C o n t r o l接口的描述,其中有 I n c r e a s e Vo l u m e方法和D e c r e a s e Vo l u m e方法。 如果发布了这个组件,而且人们把这个遥控组件用在他们的应用程序中,并使用了我们的接 口及其所有方法。如果我们再决定去掉 D e c r e a s e Vo l u m e方法会怎么样呢?显然,那些应用程 序将被严重破坏,或者将会有一些非常烦人的相关问题,如果改变一个方法参数的数量或者 类型,也可能会产生同样的问题。 因此,有一些原则需要遵守: • 在对一个接口满意前,不要发表他。 • 如果实在需要改变一个接口,不应修改已存在的这个接口,而是为所需的扩展功能再创 建一个接口。这当然要求客户类型支持多重接口,但 A S P目前不支持多重接口。 • 一个接口一旦发布,就不能改变其中的任何一部分,这包括方法的顺序、参数类型等。 如果改变了一个已经存在的接口 (我们推荐不要这样 ),应重新编译所有使用该接口的客 户应用程序。就像我们已经讲过的,使用早期绑定的客户将会把接口的设计硬编码为 第1 4章 C O M、C O M +和A S P计计441 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有