java软件体系结构设计模式----适配器

原创 2011年10月17日 09:26:47
说明:

一般说来,一个类的客户对象通过类提供的接口来访问它的服务。有些时候,一个类可以提供客户对象需要的功能,但它的接口却不同于客户对象的期望。

在这种情况下,已有的接口就需要被转换为客户对象所期望的另一个接口,以保留已有类的可重用性。


类适配器:

类是适配器被设计为适配源类的一个子类的形式,除了继承子适配源类外,适配器类还实现客户对象所期望的接口。当客户对象它调用一个适配器方法的时候,适配器在内部调用它继承来的一个适配源方法。


实例:

验证给定客户地址的应用


代码:

import java.io.*;
import java.util.*;




class Customer {
  public static final String US = "US";
  public static final String CANADA = "Canada";


  private String address;
  private String name;
  private String zip, state, type;


  public boolean isValidAddress() {


    //get an appropriate address validator
    AddressValidator validator = getValidator(type);


    //Polymorphic call to validate the address
    return validator.isValidAddress(address, zip, state);
  }


  public Customer(String inp_name, String inp_address,
                  String inp_zip, String inp_state, 
                  String inp_type) {


    name = inp_name;
    address = inp_address;
    zip = inp_zip;
    state = inp_state;
    type = inp_type;
  }


  private AddressValidator getValidator(String custType) {
    AddressValidator validator = null;


    if (custType.equals(Customer.US)) {
      validator = new USAddress();
    }
    if (type.equals(Customer.CANADA)) {
      validator = new CAAddressAdapter();
    }
    return validator;
  }
}// end of class



public interface AddressValidator {
  public boolean isValidAddress(String inp_address,
      String inp_zip, String inp_state);
}// end of class


import java.io.*;
import java.util.*;




class USAddress implements AddressValidator {


  public boolean isValidAddress(String inp_address,
      String inp_zip, String inp_state) {


    if (inp_address.trim().length() < 10)
      return false;
    if (inp_zip.trim().length() < 5)
      return false;
    if (inp_zip.trim().length() > 10)
      return false;
    if (inp_state.trim().length() != 2)
      return false;


    return true;
  }
}// end of class




import java.io.*;
import java.util.*;




class CAAddress {


  public boolean isValidCanadianAddr(String inp_address,  //注意方法名
      String inp_pcode, String inp_prvnc) {


    if (inp_address.trim().length() < 15)
      return false;
    if (inp_pcode.trim().length() != 6)
      return false;
    if (inp_prvnc.trim().length() < 6)
      return false;


    return true;
  }
}// end of class


import java.io.*;
import java.util.*;




public class CAAddressAdapter extends CAAddress 
implements AddressValidator {


  public boolean isValidAddress(String inp_address,
      String inp_zip, String inp_state) {


    return isValidCanadianAddr(inp_address, inp_zip,
           inp_state);
  }
}// end of class



对象适配器:

一个对象适配器拥有适配源对象的一个引用。与类适配器相似,对象适配器也实现客户对象期望的接口。





3-软件体系结构风格和模式

3-软件体系结构风格和模式3.1 概述 软件系统同建筑一样,也具有若干特定的“风格” (software architectural style);describes a class of archi...
  • qq_22841811
  • qq_22841811
  • 2017年01月22日 20:55
  • 2664

【《软件设计模式与体系结构》学习笔记】软件设计模式概论

【《软件设计模式与体系结构》学习笔记】软件设计模式的概念软件设计模式是对软件设计经验的总结,是对软件设计中反复出现的设计问题的已被验证的成功解决之道。大量的软件设计模式都是之前从事软件设计开发的前人经...
  • zgljl2012
  • zgljl2012
  • 2015年04月18日 15:52
  • 1638

Java设计模式菜鸟系列(八)适配器模式建模与实现

适配器模式(Adapter):将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。 主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 1...
  • JAVE_LOVER
  • JAVE_LOVER
  • 2014年10月05日 19:52
  • 2339

java软件体系结构设计模式----外观

说明: 外观模式用来处理子系统(subsystem)。一个子系统包含多个类,它们协同合作提供一系列相关特性。 子系统的客户需要和子系统中的多个类打交道来完成某个功能。这种客户和子系统中不同...
  • hnzhangshilong
  • hnzhangshilong
  • 2011年10月17日 10:14
  • 461

java软件体系结构设计模式----rmi远程代理

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://haolloyin.blog.51cto.com/1177454/332426...
  • hnzhangshilong
  • hnzhangshilong
  • 2011年10月17日 13:27
  • 1132

java软件体系结构设计模式----代理

一、代理模式的结构 代理模式给某一个对象提供一个代理对象,并有代理对象控制对原对象的引用。按照使用目的来划分有以下几种: 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对...
  • hnzhangshilong
  • hnzhangshilong
  • 2011年10月17日 13:16
  • 680

java软件体系结构设计模式------责任链

说明: 责任链(CoR)模式建议在发出请求的对象和该请求的潜在处理对象集之间建立一种低耦合的关联关系 CoR模式的一些重要特性: a,处理客户请求的潜在对象集以及它们构成链条的顺序都可以...
  • hnzhangshilong
  • hnzhangshilong
  • 2011年10月17日 09:41
  • 477

JAVA软件体系结构设计模式标准指南(1)

  • 2007年12月11日 16:13
  • 7.9MB
  • 下载

JAVA软件体系结构设计模式标准指南(2)

  • 2007年12月11日 16:25
  • 8.22MB
  • 下载

Java软件体系结构设计模式之结构模式 知识点摘录

以下知识点摘录自:《Java软件体系结构设计模式标准指南》一书。其中可能包含本人的一些感悟。        Java软件体系结构设计模式之结构模式(11种)        结构模式主要用来: 1)处理...
  • qq_15096707
  • qq_15096707
  • 2016年10月23日 15:59
  • 615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java软件体系结构设计模式----适配器
举报原因:
原因补充:

(最多只允许输入30个字)