一、什么是Adapter模式
定义一个包装类,用于包装一个不兼容的对象。荣国我们需要将一个直流12V的笔记本电脑在交流100V下工作,这时候我们就需要使用一个适配器。
二、什么时候需要使用Adapter模式呢
很多时候,我们并非从零开始,经常会使用到i现有的类。特别是当现有的类已经类充分测试过了,bug很少,而且已经被用于其他软件之中时,我们更愿意将这些类作为组件重复利用。
Adapter模式会对现有的类进行适配,生成新的类。通过该模式可以很方便地创建我们需要的方法群,当出现bug时,我们可以很明确的知道Bug不在现有的类中,我们只需要调查扮演Adpater角色的类即可。
三、Adpater模式的分类
类适配器模式(使用继承的适配器)
对象适配器模式(使用委托的适配器)
四、类适配器模式
Target:期待得到的方法
Adapter:将被适配者转换为目标接口
Adapter:被适配者。
我们可以看出,Target期望调用printWeak方法,但是adaptee并没有,这个时候我们就需要一个适配器来提供中间环节,把Adaptee的Api和Target的Api衔接起来,这就是适配器的作用。
代码解析:
public class Banner{
private String string;
public Banner(String string){
this.string=string;
}
public void showWithParen(){
System.out.println("("+string+")")
}
public void showWithParen(){
System.out.println("\*" + string + "\*")
}
}
//print 接口 (Target)
public Interface print{
public abstract void printWeak();
public abstract void printStrong();
}
//PrintBanner接口(Adapter)
public class PrintBanner extends Banner implements Print{
public PrintBanner(String string) {
super(string);
}
public void printWeak(){
showWithParen();
}
public void printString(){
showWithAster()
}
}
五、对象适配器模式
类适配器模式我们使用了继承来进行适配,而对象适配器模式使用委托(聚合)