1、类继承的适配器
1.1、类图
1.2、代码示例
Print接口,即上面类图中的Target
package me.jtzen9.adapter;
public interface Print {
void printWeak();
void printStrong();
}
Banner类,即类图中的Adaptee
package me.jtzen9.adapter;
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 + "*");
}
}
PrintBanner类,即类图中Adapter
package me.jtzen9.adapter;
public class PrintBanner extends Banner implements Print {
public PrintBanner(String string) {
super(string);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printStrong() {
showWithAster();
}
}
Client类,请求者
package me.jtzen9.adapter;
public class Client {
public static void main(String[] args) {
Print print = new PrintBanner("Hello");
print.printWeak();
print.printStrong();
}
}
2、对象委托的适配器
2.1、类图
2.2、代码示例
Print2抽象类,即上面类图中的Target
package me.jtzen9.adapter;
public abstract class Print2 {
public abstract void printWeak();
public abstract void printStrong();
}
PrintBanner2类,即类图中Adapter
package me.jtzen9.adapter;
public class PrintBanner2 extends Print2{
private Banner banner;
public PrintBanner2(String string) {
this.banner = new Banner(string);
}
@Override
public void printWeak() {
banner.showWithParen();
}
@Override
public void printStrong() {
banner.showWithAster();
}
}
其中,Client类与Banner类(类图中Adaptee)不变。
3、说明
摘至:【日】结城浩/著,杨文轩/译 .《图解设计模式》 北京:人民邮电出版社. 2017. 13~22