作用:使不同的类之间进行协调配合(220V的电压经过适配器给12V的电脑供电)
Adapt模式有以下两种:
1.类适配器模式(使用继承的适配器)
UML类图:
Banner类:
public class Banner //220伏电压 { 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 //12伏特的笔记本电脑 { public abstract void printWeak(); //虚弱的输出字符串 public abstract void printStrong();//强调性的输出字符串 }
PrintBanner类:
//适配器类 public class PrintBanner extends Banner implements Print { public PrintBanner(String string) { super(string); } public void printWeak() { showWithParen(); //调用Banner方法 } public void printStrong() { showWithAster(); //调用Banner方法 } }
主函数:
public class Main() { public static void main(String[] args) { Print p = new PrintBanner("hello"); p.printWeak(); p.printStrong(); } }
2.对象适配器模式(使用委托的适配器)
UML类图:
print类:
public abstract class Print { public abstract void printWeak(); public abstract void printStrong(); }
PrintBanner类:
public class PrintBanner extends Print { private Banner banner; public PrintBanner(String string) { this.banner = new Banner(string); } public void printWeak() { banner.showWithParen(); } public void printStrong() { banner.showWithAster(); } }
两者区别:第一种是通过单继承和实现接口的方法进行适配,第二种是单继承和包含尽心适配
使用场景:现有的类Bug很少,我们可以将其当作组件来使用,添加适配器让类之间进行合理的调用