本篇博客为本人学习设计模式时的笔记以及理解
Adapter 模式 (委托)
在使用手机充电时,我们不可能直接使用家里的220v电流,iphone需要的是5v的电流,所以我们需要一个Adapter
桥接这两者,在设计模式中,把手机这个角色可以称为Target
,而电源为Adaptee(被适配者)
,苹果的电源适配器就是这个Adapter
接口/抽象类
Banner Adapter中的Adaptee对象,是被适配的对象,该对象持有两个对应的方法,而我们需要使用Adapter适配成Print的实现类
public class Banner{
private String string;
...构造函数
...showWithParen()
...showWithAster()
}
Print 需要转换成 Adapter模式中的Target对象,是我们所需要使用的方法
public abstract class Print{
public abstract void printWeak();
public abstract void printStrong();
}
PrintBanner Adapter中的Adapter对象,把Adaptee对象的方法适配成了Print的实现类,把Adaptee对象作为一个实例保存在该类的实例中
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();
}
}
总结
该委托模式
的意思是,当这个适配器(Adapter)被调用PrintWeak方法时,并不是自己处理,而是交给其他的类处理.
而Adapter模式还有一种继承模式
,则为继承Adaptee去适配Target,当然这个适配器不可能同事继承两个类,继承模式时,比如Print为一个接口,我们就可以继承Banner类,且实现Print接口
public class PrintBanner extends Banner implements Print{
public PrintBanner(String string){
super(string);
}
public void printWeak(){
showWithParen();
}
public void printStrong(){
showWithAster();
}
}