Structural Patterns(结构模式)主要关注于如何将一些小的类或对象组织成一个大的结构。Structural Patterns分为Structural Class Patterns(结构类模式)和Structural Object Patterns(结构对象模式),Structural Class Patterns用一些面向对象的继承和封装性质将一些接口和对接口的实现组织起来,使得接口的外部调用和接口的内部实现独立;而Structural Object Patterns描述的却是将一些小的对象组合起来实现一些新的功能结构的方法,在这种模式下,使得这些对象的组合变得灵活,甚至可以在运行时决定或者修改组合方式。
Structural Patterns主要分为以下7种模式:Adapter Pattern(适配器模式),Bridge Pattern(桥接模式),Composite Pattern(组合模式),Decorator Pattern(装饰器模式),Facade Pattern(外观模式),Flyweight Pattern(享元模式),Proxy Pattern(代理模式)。
Adapter Pattern:
Adapter Pattern(适配器模式)会将一些类接口转化成使用者所期望的接口,使得一些在接口上不兼容的类相互协调起来。
在开发的过程中可能会遇到一种情况,某个功能如果自己去实现的话可能需要花费大量的时间和精力(甚至自己根本就不会实现),而网上又有现成可用的工具包或者库,这个时候如果用工具包来实现这一功能当然能够事半功倍。工具包开发出来就是方便将来的开发者代码重用,但是有的时候并不能直接重用,因为工具包只提供了一种(或者少量的)形式的接口,而不同的开发所需要用到的接口形式几乎是各不相同,工具包所提供的接口不可能全部对各种开发所需要的接口形式兼容。有两种方法可以解决这个问题:1.修改工具包的接口。2.用Adapter Pattern将工具包的接口转化(不是修改)成所需要用到的形式。使用第一种方法有几点需要注意:1.工具包的接口和所需要用到的接口形式不兼容是正常的,工具包本来就是通用的,而不是适用于某一个特定的开发,所以要改动也是特定开发中使用工具包方式的改动。2.如果要改动工具包的接口形式的话,还需要知道工具包的源代码。3.对工具包的改动可能需要花费大量的工作,还可能出错。因此,通常不会选择直接修改工具包的接口形式,而是用Adapter将这些接口形式间的不兼容转化成兼容。
(未完待续……)