适配器模式(Adapter)-----基于JAVA语言
来源:互联网 发布:毛利率的算法 编辑:程序博客网 时间:2024/06/14 15:42
适配器模式(Adapter)
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。
类的适配器模式:
核心思想就是:有一个Source类,拥有一个方法,待适配,目标接口是Targetable,通过Adapter类,将Source的功能扩展到Targetable里例子:
public class Source { public void method1() { System.out.println("this is original method!"); } } public interface Targetable { /* 与原类中的方法相同 */ public void method1(); /* 新的方法 */ public void method2(); } //类Source和接口Targetable因为不兼容,导致不能在一起工作 //适配器Adapter则可以在不改变源代码的基础上解决这个问题 //这样Targetable接口的实现类Adapter的对象即使Targetable类型,也能访问到Source中的方法 public class Adapter extends Source implements Targetable { public void method2() { System.out.println("this is the targetable method!"); } } //测试类 这样Targetable接口的实现类就具有了Source类的功能。 public class AdapterTest { public static void main(String[] args) { Targetable target = new Adapter(); target.method1(); target.method2(); } }
对象的适配器模式:
基本思路和类的适配器模式相同,只是将Adapter类作修改,这次不继承Source类,而是持有Source类的实例,以达到解决兼容性的问题
例子:
public class Source { public void method1() { System.out.println("this is Source method!"); }}public interface Targetable { public void method1(); public void method2();}public class Adapter implements Targetable{ private Source source; public Adapter(Source source) { this.source = source; } @Override public void method1() { source.method1(); } @Override public void method2() { System.out.println("this is the targetable method!"); } }public class Test { public static void main(String[] args) { Source source = new Source(); Targetable target = new Adapter(source); target.method1(); target.method2(); }}
接口的适配器模式
接口的适配器是这样的:有时我们写的一个接口中有多个抽象方法,当我们写该接口的实现类时,必须实现该接口的所有方法,这明显有时比较浪费,因为并不是所有的方法都是我们需要的,有时只需要某一些,此处为了解决这个问题,我们引入了接口的适配器模式,借助于一个抽象类,该抽象类实现了该接口,实现了所有的方法,而我们不和原始的接口打交道,只和该抽象类取得联系,所以我们写一个类,继承该抽象类,重写我们需要的方法就行。
public interface Sourceable { public void method1(); public void method2();}public abstract class Adapter implements Sourceable { public void method1() {} public void method2() {}}public class Test { public static void main(String[] args) { Sourceable source = new Sourceable() { @Override public void method2() { // TODO Auto-generated method stub } @Override public void method1() { // TODO Auto-generated method stub } }; Sourceable source2 = new Adapter() { @Override public void method1() { // TODO Auto-generated method stub super.method1(); } }; }}
3中模式充分的体现了适配器模式的作用,
阅读全文
0 0
- 适配器模式(Adapter)-----基于JAVA语言
- java 适配器模式(Adapter)
- Java Adapter 适配器模式
- Java设计模式 - Adapter(适配器模式)
- java适配器模式(adapter模式)
- java适配器模式(Adapter 模式)
- Java适配器模式(Adapter模式)
- Java设计模式---适配器模式(Adapter)
- Java适配器模式(Adapter模式)
- Java设计模式--适配器(Adapter)模式
- JAVA设计模式-适配器模式(Adapter)
- java设计模式--适配器模式(Adapter)
- JAVA设计模式:适配器(Adapter)
- java中适配器设计模式(adapter)
- java适配器模式(Adapter)-结构型
- 设计模式:adapter适配器 (java)
- 适配器模式(Adapter)
- 适配器模式(Adapter)
- 关于cache命中与缺失的计算
- JAVA事件处理中e.getSource()和e.getActionCommand()方法的区别
- java Calendar和Date()的转化
- 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读
- 深度学习--CNN
- 适配器模式(Adapter)-----基于JAVA语言
- define
- Thinkphp 3.2.3配置百度编辑器(UEditor)
- 机器学习基石-Regularization
- 唯快不破:TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
- tf.Graph()
- 【JQuery学习笔记二】利用JQuery完成不同的文档和节点操作!
- Python网络编程 3.1 由简单的TCP服务器、客户端程序分析相关方法
- 一个游戏是如何被设计和开发出来的(怎样开发一款游戏)