在编程时,经常会出现现有程序无法直接使用,需要做适当的变换之后才能使用的情况。这种用于填补”现有程序”和”所需程序”之间的差异的设计模式就是适配器模式。
适配器模式有两种:
使用继承的适配器
类图:

代码:
1 | public class Main { |
1 | public class Banner { |
1 | public class PrintBanner extends Banner implements Print { |
这里Banner是现有的类,Print接口是我们要用的接口,PrintBanner实现此接口。Main函数中,使用Print接口定义的方法来输出信息。注意实际上用的是实现了Print接口的PrintBanner中的方法,PrintBanner又是继承自Banner,其printWeak()方法和printStrong()都是调用的Banner中的函数。这样就使得Main函数在完全不知道Banner存在的情况下,使用了Banner中的两个方法。就像给笔记本电脑充电,适配器连接了插座和电脑,而电脑完全不关心插座上是多少伏的电压。
使用委托的适配器
使用委托的适配器,PrintBanner与Banner间不再有继承关系,转为PrintBanner持有一个Banner,并把操作委托给Banner。
代码
1 | public class PrintBanner extends Print { |