使用继承的适配器(类适配器)
package xin.jiangqiang.adapter;
public interface Print{
void printWeak();
void printStrong();
}
package xin.jiangqiang.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 + "*");
}
}
package xin.jiangqiang.adapter;
public class PrintBanner extends Banner implements Print {
public PrintBanner(String s) {
super(s);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printStrong() {
showWithAster();
}
}
package xin.jiangqiang.adapter;
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
使用委托的适配器(对象适配器)
package xin.jiangqiang.adapter;
public abstract class Print2 {
public abstract void printWeak();
public abstract void printStrong();
}
package xin.jiangqiang.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();
}
}
package xin.jiangqiang.adapter;
public class Main {
public static void main(String[] args) {
Print2 p = new PrintBanner2("Hello");
p.printWeak();
p.printStrong();
}
}