一个周末又度过了,不过好像过得有点累,不过再类也要坚持学习。呵呵!
今天就要开始学习“结构模式”中的 适配器模式了。 先来看看定义。
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。
适配器模式有两种形式:
一、类的适配器模式。
目标角色(Target):这是客户端所期待的接口。因为 C#不支持多继承,所以 Target 必须是接口,不可以是类。
源角色(Adaptee):需要适配的类。
适配器角色(Adapter):把源接口转换成目标接口。这一角色必须是类。
二、对象的适配器模式。
目标角色(Target):这是客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。
源角色(Adaptee):需要适配的类。
适配器角色(Adapter):通过在内部包装(Wrap)一个 Adaptee 对象,把源接口转换成目标接口。
在以下各种情况下可以使用适配器模式:
1、 系统需要使用现有的类,而此类的接口不符合系统的需要。
2、 要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有很复杂的接口。
3、 (对对象适配器而言)在设计里,需要改变多个已有子类的接口,如果使用类的适配器模式,就要针对每一个子类做一个适配器,而这不太实际。
Adapter 模式在实现时有以下这些值得注意的地方:
1、 目标接口可以省略,模式发生退化。但这种做法看似平庸而并不平庸,它可以使 Adaptee不必实现不需要的方法(可以参考 Defa 模式)。其表现形式就是父类实现缺省方法,而子类只需实现自己独特的方法。这有些像模板模式。
2、 适配器类可以是抽象类。
3、 带参数的适配器模式。使用这种 ,适配器类可 数返还一个合适的实例给客户端。
额 这个适配器模式看完了,总结一下:从定义和事例来看,这个适配器就是 让本身不支持某一种方法的接口去支持那一种方法,而实现的关键就在于多了一个2者之间的派生类。而在这个派生类中去调用了那个本色没有的方法。从而达到了掉用同一个接口 实现了不属于这个接口的方法。 说是 就好比变压器一样,本来传入电压是220V 但是通过不同的变压器可以变成你想要的电压。