目的:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
元素:
Target(对象):客户所希望的接口,提供接口的抽象方法。
Client(客户):使用最终接口的类。
Adaptee(被动符合):具有方法但是不符合客户需要。
Adapter(适配器):具有Adaptee的实例,实现Target接口,通过方法的再封装将原本不符合客户需要的方法封装成符合需求的方法。
类图:
代码示例:
Banner.java
public class Banner {
private String str;
public Banner(String str)
{
this.str = str;
}
public void showWithParen()
{
System.out.println("("+str+")");
}
public void showWithAster()
{
System.out.println("*"+str+"*");
}
}
Print.java
public interface Print {
abstract void printWeak();
abstract void printStrong();
}
PrintBanner.java
public class PrintBanner implements Print{
private Banner banner;
public PrintBanner(String str)
{
this.banner = new Banner(str);
}
@Override
public void printStrong() {
// TODO Auto-generated method stub
banner.showWithAster();
}
@Override
public void printWeak() {
// TODO Auto-generated method stub
banner.showWithParen();
}
}
Main.java
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Print p = new PrintBanner("hello");
p.printWeak();
p.printStrong();
}
}