《Head First Design Patterns》:第7章,适配器(Adapter)模式

适配器模式的定义

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

场景描述

鸭子数量不够,使用火鸡冒充鸭子

方案

1
2
3
4
5
6
7
8
9
10
11
12
13
public interface Duck {
public void quack();
public void fly();
}

public class MallardDuck implements Duck {
public void quack() {
System.out.println("Quack");
}
public void fly() {
System.out.println("I'm flying");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
public interface Turkey {
public void gobble();
public void fly();
}

public class WildTurkey implements Turkey {
public void gobble() {
System.out.println("Gobble gobble");
}
public void fly() {
System.out.println("I'm flying a short distance");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
public void quack() {
turkey.gobble();
}
public void fly() {
for(int i=0; i < 5; i++) {
turkey.fly();
}
}
}

适配器模式VS装饰者模式

适配器模式 装饰者模式
意图是将一个类的接口转换为另一个服务期望的接口,简而言之意图是进行接口转换。 意图是对于被包装的接口,加入新的行为或责任,而不是进行接口之间的转换。