Java语言结构性模式之变压器模式介绍 - 编程入门网
代码清单3. Adapter的源代码。 类形式的变压器模式的效果 第一、使用一个实类把源(Adaptee)适配到目标(Target)。这样一来,如果你想把源以及源的子类都使用此类适配, 就行不通了。 第二、由于变压器类是源的子类,因此可以在变压器类中置换(override)掉源的一些方法。 第三、由于只引进了一个变压器类,因此只有一个路线到达目标类。问题得到简化。 实例形式的变压器模式的定义 实例形式的变压器模式的类图定义如下。 图2. 实例变压器模式的类图定义 Java语言结构性模式之变压器模式介绍(3)时间:2010-12-17在图1可以看出,模式所涉及的成员有: 目标(Target)。这就是我们所期待得到的接口。目标可以是实的或抽象的类。 源(Adaptee)。现有需要适配的接口。 变压器(Adapter)。变压器类是本模式的核心。变压器把源接口转换成目标接口。 显然,这一角色必须是实类。 本模式的示范代码如下:
代码清单4. Target的源代码。
代码清单5. Adapter的源代码。
代码清单6. Adaptee的源代码。 实例形式的变压器模式的效果 第一、一个变压器可以把多种不同的源适配到同一个目标。换言之,同一个变压器可以把源类和它的子类都适配到目标接口。 第二、与类形式的变压器模式相比,要想置换源类的方法就不容易。如果一定要置换掉源类的一个或多个方法,就只好先做一个源类的子类, 将源类的方法置换掉,然后再把源类的子类当作真正的源进行适配。 第三、虽然要想置换源类的方法不容易,但是要想增加一些新的方法则方便得很。 而且新增加的方法同时适用于所有的源。 在什么情况下使用变压器模式 在以下各种情况下使用变压器模式: 第一、你需要使用现有的类,而此类的接口不符合你的需要。 第二、你想要建立一个可以重复使用的类,用以与一些彼此之间没有太大关联的一些类, 包括一些可能在将来引进的类一起工作。这些源类不一定有很复杂的接口。 第三、(对实例形式的变压器模式而言)你需要改变多个已有的子类的接口, 如果使用类形式的变压器模式,就要针对每一个子类做一个变压器类,而这不太实际。 J2SE中的变压器模式的使用 在Java语言2.0的标准SDK中,有很多的变压器类。如: 库程序包java\awt\event中有 ComponentAdapter ContainerAdapter FocusAdapter HierarchyBoundsAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter 库程序包Javax\swing\event中有 InternalFrameAdapter MouseInputAdapter Java语言结构 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |