Java设计模式—-适配器模式

在我们编程过程中,经常会出现一种情况,就是现有的代码没办法直接使用,需要做一些适当的变换,来适配原有的程序,所以叫做适配器模式,或者包装器模式。

1.1 定义Print接口

接口定义两个抽象方法输出字符串

1
2
3
4
public interface Print {
abstract public void PrintWeak();
abstract public void PrintStrong();
}

1.2 定义Banner类

此类定义要打印的字符串及其构造方法, 定义了两个函数打印不同的字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Banner {
private String name;

public Banner(String name) {
this.name = name;
}

public void showWithParen() {
System.out.println("(" + name + ")");
}

public void showWithAster() {
System.out.println("*" + name + "*");
}
}

1.3 定义PrintBanner类

这个类就是一个适配器,它继承了Banner类以及方法,实现了Print接口也重写了方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class PrintBanner extends Banner implements Print {

public PrintBanner(String name) {
super(name);
}

@Override
public void PrintWeak() {
showWithParen();
}

@Override
public void PrintStrong() {
showWithAster();
}
}

1.4 测试代码

这里用Print类型的变量来保存PrintBanner的实例,因为我们无需在意Banner类的方法。

1
2
3
4
5
6
7
8
9
public class RunMain {
public static void main(String[] args) {
// 编译类型为接口Print,运行类型为PrintBanner
Print print = new PrintBanner("Hello");

print.PrintStrong();
print.PrintWeak();
}
}

1.5 总结

现如今,软件的更新换代很快,常常会出现新版本和旧版本的适配问题,适配器模式对于维护新版本起到了很大的作用。