设计模式-适配器

摘自 java编程思想 177p
需求:

现有处理器类Processor.滤波器类型Waveform,filter,两者的接口方法类似,名字相同,返回值不同.
因为Apply.process方法和Processor耦合过紧,滤波器无法复用.
适配器:维护一个已有的接口(在本例中为Fliter接口),为了能够服用Apply.process方法,需要适配器实现(implements)目标接口.

解决方法:将Processor抽象成一个接口,使其解耦,为适配器作铺垫,适配器Adapter实现Processor后即可复用Apply.process方法.
创建的时候传入一个Filter,通过这个Filter生产返回值.

public class Processor{
public String name(){ return getClass.getSimpleName(); } //返回类的名字; 子类直接继承
Object process(Object input){ return input;}
}
class Upcase extends Processor{
String process(Object input){ return ((String)input).toUpperCase();} // 子类重写父类方法返回值必须一样或为父类(Object)的子类(String).

}
class Downcase extends Processor{
String process(Object input){ return ((String)input).toLowerCase();}

}
class Apply{
public static void process(Processor p,Object){
print(“now use”+p.name());
print(p.process());
}
public static String s=“asfafsadgasdg sa sdag sad”;
main {
process(new Upcase(),s);
process(new Downcase(),s);
}
}
Apply.process方法 可以接收任何类型的Processor; 像这样根据传入的类型不同有不同行为的方法被称为"策略设计模式".

如有一滤波器类型 Waveform

public class Waveform{ //Waveform相当于 Processor里的s,被处理的对象
private static long counter;
private final long id=counter++;
public String toString(){return “Waveform”+id;}
}
源码
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值