HeadFirst 设计模式 - Chapte7 适配器模式/外观模式

Author Avatar
thychan Nov 12, 2016
  • Read this article on other devices

适配器设计模式

定义

将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

适配器模式包括三个角色:目标接口Target,需要适配的类Adaptee,和适配器Adatper.

img

explanation:
这个模式可以通过创建适配器进行接口转换,让不兼容的接口变得兼容。
1.适配器实现目标接口 2. 使用对象组合:适配器与被适配者的组合(turkey).

在写适配器的时候需要找出每一个适配器方法在被适配器者中的对应的方法是什么。


代码

Target:Duck

1
2
3
4
public interface Duck {
public void quack();
public void fly();
}

Adaptee: Turkey

1
2
3
4
public interface Turkey {
public void gobble();
public void fly();
}

Adapter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TurkeyAdapter implements Duck {
Turkey turkey;
TurkeyAdapter(Turkey turkey){
this.turkey = turkey;
}
public void fly() {
for(int i=0;i<5;i++){
turkey.fly();
}
}
public void quack() {
turkey.gobble();
}
}

Client:

1
2
3
4
5
6
7
8
9
public class DuckTestDrive {
public static void main(String[] args) {
MallardDuck Duck = new MallardDuck();
WildTurkey turkey = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(turkey); // generate a turkey-like duck
turkeyAdapter.fly();
turkeyAdapter.quack();
}
}

外观设计模式

提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

外观的意图就是提供一个简单的接口+将客户从组件的子系统中解耦。

img

比较

装饰者:不改变接口,但假如责任
适配器:将一个接口转成另一个接口
外观:让接口更简单

注:该文章转载自:https://segmentfault.com/u/secondlife/articles