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



对象适配器:

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





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

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

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

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

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

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

以下知识点摘录自:《Java软件体系结构设计模式标准指南》一书。其中可能包含本人的一些感悟。        Java软件体系结构设计模式之结构模式(11种)        结构模式主要用来: 1)处理...

关于软件体系结构设计模式的总结

因为软件体系结构的设计模式太多了,如果用的不多,shi
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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