java设计模式之适配器模式

来源:互联网 发布:济南易途java培训骗局 编辑:程序博客网 时间:2024/06/11 05:45
使用场景:(例子说明)类A有一些功能,但是他需要一个xml读取模块才可以工作,然后这个模块需要实现XmlReader接口 
<pre class="java" name="code">public interface XmlReader{    public InputSteam xmlReader(){    }}
这个时候,我们发现有一个类B已经有了xml读取这个功能,但是它实现了另一个接口ReaderXml
public interface ReaderXml{    public InputSteam readerXml(){    }}

我们不想重复再写这一个功能,所以我们需要借用B类中已经写好的功能,这时,我们的做法就是写一个适配器(类适配器)

public class Adapter implements XmlReader extends B{    public InputStream xmlReader(){        return readerXml();    }}

或者另一种实现方法(写法)(对象适配器)

public class Adapter implements XmlReader{    ReaderXml b = new B();    public InputStream xmlReader(){        return b.readerXml();    }}


 

适配器所涉及的角色包括:目标,客户,被适配者,适配器。

目标:定义客户端使用的特定接口(XmlReader接口)。

客户:使用了目标接口,同 和目标接口一致的对象合作 的类(A类)。

被适配者:一个需要匹配的接口(ReaderXml接口)。

适配器:负责将被 适配者接口 转换成 目标接口 的类(Adapter)。它是一个具体的类

 

第二个适配器例子:

public class Adaptee{    public void specialRequest(){        System.out.println("Called SpecificRequest() in Adaptee");    }}
<pre class="java" name="code">public class Client { //客户类public static void main(String[] args) {Target t = new Adapter();//客户类只和他需要实现的那个接口打交道即可t.request();}}public interface Target{public void request();}public class Adapter extends Adaptee implements Target{public void request(){this.specialRequest();}}

  

0 0
原创粉丝点击