https://www.ituring.com.cn/book/1811
代码
https://www.aliyundrive.com/s/7M6kdZ9Kytq
适应性设计模式
1 Iterator模式——一个一个遍历
1.2 示例程序
示例程序的作用是将书放置到书架中,并将书的名字按照顺序显示出来。

2 Adapter模式——加个适配器以便于复用
2.1 Adapter模式
Adapter模式也被称为Wrapper模式。Wrapper有“包装器”的意思。
Adapter模式有以下两种适配器
| 电源的比喻 | 示例程序 | |
|---|---|---|
| 实际情况 | 交流100伏特 | Banner类(showWithParen、showWithAster) |
| 变换装置 | 适配器 | PrintBanner类 |
| 需求 | 直流12伏特 | Print接口(printWeak、printStrong) |
使用了“类适配器模式”的示例程序的类图(使用继承)

类
public class Banner {private String string;public Banner(String string) {this.string = string;}public void showWithParen() {System.out.println("(" + string + ")");}public void showWithAster() {System.out.println("*" + string + "*");}}
Print接口
是“需求”接口
public interface Print {void printWeak();void printStrong();}
PrintBanner类
该类扮演适配器决角色。继承了Banner。同时又实现了Print接口。
public class PrintBanner extends Banner implements Print {public PrintBanner(String string) {super(string);}@Overridepublic void printWeak() {showWithParen();}@Overridepublic void printStrong() {showWithAster();}}
2.3 使用委托的示例程序
使用了“对象适配器模式”的示例程序的类图(使用委托)

PrintBanner类
public class PrintBanner extends Print {private Banner banner;public PrintBanner(String string) {this.banner = new Banner(string);}@Overridepublic void printWeak() {banner.showWithParen();}@Overridepublic void printStrong() {banner.showWithAster();}}
Print类
public abstract class Print {public abstract void printWeak();public abstract void printStrong();}
2.4 Adapter模式中的角色
在Adapter模式中有以下角色。
- Target(对象) 该角色是定义所需的方法。
- Client(请求者) 该角色负责使用Target角色定义的方法进行具体处理
- Adaptee(被适配)Adaptee是一个持有特定方法的角色
- Adapter(适配)

