- 22
- 0
- 约1.2万字
- 约 45页
- 2018-12-10 发布于天津
- 举报
第8章适配器模式(Adapter)
/torque/ * * 客户端调用target的接口方法,具体的实现(adapter)把需求适配给Adaptee,最终调用Adaptee的方法来实现客户端的调用请求 public interface Target{ public long get2Power(long exp); } public class Adaptee{ public long getPower(long base,long exp){ long result=1; for(int i=0;iexp;i++) result*=base; return result; } } public class Adapter implements Target{ private Adaptee pt; public Adapter(){ pt = new Adaptee(); } public long get2Power(long exp){ return pt.getPower(2,exp); } } public class Adapter implements Target{ private Adaptee pt; public Adapter(){ pt = new Adaptee(); } public long get2Power(long exp){ return pt.getPower(2,exp); } } public class Client{ public static void main(String[] args){ long exp=5; Target t= new Adapter(); String str = 2 power +exp+=; str +=t.get2Power(exp); System.out.println(str); } } * * 分析以下例子,确定各个类的角色(续) class WebFormDesigner_text_actionAdapter implements java.awt.event.ActionListener { WebFormDesigner adaptee; WebFormDesigner_text_actionAdapter( WebFormDesigner adaptee) { this.adaptee = adaptee;} public void actionPerformed(ActionEvent e) { adaptee.text_actionPerformed(e); } } 分析 WebFormDesigner在本例中是Adaptee WebFormDesigner_text_actionAdapter在本例中是Adapter, java.awt.event.ActionListener在本例中是适配目标。 适配目标为一接口,代码如下: public interface ActionListener extends EventListener { /** * Invoked when an action occurs. */ public void actionPerformed(ActionEvent e); } 分析 适配目标中只有一个方法:actionPerformed()。 actionPerformed方法是引用了WebFormDesigner这adaptee来完成的。 WebFormDesigner是WebFormDesigner_text_actionAdapter的方法的参数 所以WebFormDesigner_text_actionAdapter依赖WebFormDesigner。 分析 Adaptee类(WebFormDesigner)的方法(text_actionPerformed) 与Adapter类(WebFormDesigner_text_actionAdapte) 的方法(actionPerformed)不同名而实现相同功能 这就是上面分析的基于对象的Adapter模式。 Java中的应用—Iterator适配器(对象的适配器模式)。 Java中的应用—Enumeration适配器(对象的适配器模式)。 Java中的应用—I/O字节流到字符流的适配器(对象的适配器模式) ByteArrayInputStream, FileInputStream, Outpu
原创力文档

文档评论(0)