`
abc778201
  • 浏览: 9176 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

接口的使用——适配器设计模式

阅读更多
/////////在电子滤波器的例子中,类库是被发现而非创建的,在这些情况下,可以使用适配器设计模式,适配器(FilterAdapter)中的代码将接受你所拥有的接口(Processor),并产生你所需要的接口,用组合将基类(Filter)与接口(Processor)联系起来。

class Waveform{
private static long counter;
private final long id=counter++;
public String toString(){ return "Waveform"+id; }
}

class Filter{
public String name(){
  return getClass().getName();
}
public Waveform process(Waveform input){ return input; }
}

class LowPass extends Filter{
double cutoff;
public LowPass(double cutoff){ this.cutoff=cutoff; }
public Waveform process(Waveform input){ return input; }
}

class HighPass extends Filter{
double cutoff;
public HighPass(double cutoff){ this.cutoff=cutoff; }
public Waveform process(Waveform input){ return input; }
}

class BandPass extends Filter{
double lowCutoff,highCutoff;
public BandPass(double lowCutoff,double highCutoff){ this.lowCutoff=lowCutoff; this.highCutoff=highCutoff; }
public Waveform process(Waveform input){ return input; }
}



interface Processor{
String name();
Object process(Object input);
}

class Apply{
public static void process(Processor p,Object s){
  System.out.print("Using Processor\n"+p.name()+"\n");
  System.out.print(p.process(s)+"\n");
}
}

//////////适配器

class FilterAdapter implements Processor{
Filter filter;/////////////用到了代理

public FilterAdapter(Filter filter){ this.filter=filter; }
public String name(){ return filter.name(); }
public Waveform process(Object input){
  return filter.process((Waveform)input);
}
}

public class FilterProcessor {
public static void main(String[] args){
  Waveform w=new Waveform();
  Apply.process(new FilterAdapter(new LowPass(1.0)), w);

//////////////////分析这句代码:初始化最里面的对象,一步一步向外扩张调用需要的方法。
  Apply.process(new FilterAdapter(new HighPass(2.0)), w);
  Apply.process(new FilterAdapter(new BandPass(3.0,4.0)), w);
}
}
分享到:
评论

相关推荐

    design-pattern-java.pdf

    七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...

    Python设计模式之适配器模式原理与用法详解

    设计模式——适配器模式 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口.Adapter Pattern使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 应用场景:系统数据和

    设计模式可复用面向对象软件的基础.zip

    1.8 怎样使用设计模式 20 第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    24种设计模式介绍与6大设计原则

    总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

    设计模式Demo

    针对23种设计模式,分别写了demo并画了类图帮助理解。 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰...

    C++设计模式原理与实战视频课

    C++设计模式原理与实战视频课 1-1 课程介绍 1-2 导论UML和设计模式导论 2-1 简单工厂方法的定义场景与实现-针对接口编程的设计思想剖析 2-2 简单工厂实用工程技术:C++对象动态创建技术与配置化开发 2-3 单例模式的...

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    设计模式1.1 这是一本什么书1.2 开始前的准备1.3 预备知识1.4 似曾相识的设计1.5 设计模式的起源——模型、视图和控制器1.5.1 在模型对象中封装数据和基本行为1.5.2 使用视图对象向用户展示信息1.5.3 用控制器对象...

    深入理解JavaScript系列.chm

    39.设计模式之适配器模式 40.设计模式之组合模式 41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之状态模式 44.设计模式之桥接模式 45.代码复用模式(避免篇) 46.代码复用模式(推荐篇) 47.对象创建...

    C#23种设计模式_示例源代码及PDF

    适配器模式: 从而使原本因接口原因不 适配器模式 把一个类的接口变换成客户端所期待的另一种接口, 匹配而无法一起工作的两个类能够一起工作。 适配类可以根据参数返还一个合适的实例给客 户端。 7、BRIDGE —...

    x86 PC汇编语言、设计与接口(第五版)——内容清晰有书签

    第21章 386微处理器:实模式与保护模式 第22章 高速存储器设计和缓存 第23章 奔腾和risc处理器 第24章 x86的演化:从32位到64位 第25章 系统设计与故障分析 第26章 isa、pc104和pci总线 第27章 usb编程

    管理系统javasal源码-Design-Patterns-Demo:超全的设计模式——理论+实现demo

    创建型模式:这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern)抽象...

    asp.net知识库

    泛型技巧系列:避免基类及接口约束 New Article 不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-extern C#2.0-可空类型 C#2.0-分部类 C#2.0-迭代器 C#2.0 的新增功能学习 泛型的序列化问题 .NET 2.0 ...

    深入理解JavaScript系列

    深入理解JavaScript系列(39):设计模式之适配器模式 深入理解JavaScript系列(40):设计模式之组合模式 深入理解JavaScript系列(41):设计模式之模板方法 深入理解JavaScript系列(42):设计模式之原型模式...

    领域驱动设计与模式实战

    2.4 针对具体应用程序类型的设计模式 2.5 领域模式 2.6 小结 第3章 TDD与重构 3.1 TDD 3.1.1 TDD流程 3.1.2 演示 3.1.3 设计效果 3.1.4 问题 3.1.5 下一个阶段 3.2 模拟和桩 3.2.1 典型单元测试 3.2.2 声明独立性 ...

    javaSE代码实例

    第9章 接口——灵活性的基石 156 9.1 概述及其特性 156 9.2 成员变量在接口中的使用 157 9.2.1 语法规则 157 9.2.2 接口中成员变量的作用 158 9.3 方法在接口中的使用 159 9.3.1 语法规则 159 9.3.2 ...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    设计模式 结构模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 创建模式 抽象工厂模式 工厂方法模式 建造这模式 原型模式 单例模式 行为模式 责任链模式 命令模式 解释...

    Java开发技术大全 电子版

    7.5.2RandomAccessFile类使用示例——文件加密256 7.6控制台输入和输出257 7.6.1控制台输入类Scanner257 7.6.2格式化输出printf258 7.7序列化261 7.8本章小结264 第4篇Java中的高级技术 第8章Java的多线程...

    CommonAdapter-通过封装BaseAdapter和RecyclerView.Adapter得到的通用的,简易的Adapter.zip

    提供了getConvertedData(data, type)方法来对item传入的数据做转换,方便拆包和提升item的复用性 支持viewpager的正常加载模式和懒加载 支持快速将listview的适配器切换为recyclerView的适配器 viewpager的...

    编程新手真言......

    8.3 OO,模板,设计模式与设计 171 8.4 设计能力和程序员能力模型 172 8.4 自上而下设计和自下而上设计 173 8.5 大中型软件和复用与逻辑达成 177 8.6 通用设计与专门设计 178 8.7 具象与抽象 178 8.7 架构与应用 179 ...

Global site tag (gtag.js) - Google Analytics