您的位置:逆风者 新闻资讯 正文
 添加时间:2007-11-07 原文发表:2007-11-07 人气:37

本文章共6680字,分5页,当前第4页,快速翻页:
 

    return validator.isValidAddress(address, zip, state); 
  } 
  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 
  CAAddressAdapter设计和对AddressValidator(声明期望的接口)对象的多态调用使Customer可以利用接口不兼容CAAddress类提供的服务。

 
1f3c0ibb0e65


  Figure 20.4: Address Validation Application?Using Class Adapter

 
c2t12b1g8856


  Figure 20.5: Address Validation Message Flow?Using Class Adapter

  作为对象适配器的地址适配器

  当讨论以类适配器来实现地址适配器时,我们说客户类期望的AddressValidator接口是Java接口形式。现在,让我们假设客户类期望AddressValidator接口是抽象类而不是java接口。因为适配器CAAdapter必须提供抽象类AddressValidatro中声明的接口,适配器必须是AddressValidator抽象类的子类、实现抽象方法。

Listing 20.8: AddressValidator as an Abstract Class 
public abstract class AddressValidator { 
  public abstract boolean isValidAddress(String inp_address, 
     String inp_zip, String inp_state); 
}//end of class 
Listing 20.9: CAAddressAdapter Class 
class CAAddressAdapter extends AddressValidator { 
          … 
          … 
  public CAAddressAdapter(CAAddress address) { 
    objCAAddress = address; 
  } 
  public boolean isValidAddress(String inp_address, 
     String inp_zip, String inp_state) { 
          … 
          … 
  } 
}//end of class 

  因为多继承在JAVA中不支持,现在适配器CAAddressAdapter不能继承现有的CAAddress类,它已经使用了唯一一次继承其他类的机会。

  应用对象适配器模式,CAAddressAdapter可以包含一个适配者CAAddress的一个实例。当适配器第一次创建的时候,这个适配者的实例通过客户端传递给适配器。通常,适配者实例可以通过下面两种方式提供给包装它的适配器。

  (1)    对象适配器的客户端可以传递一个适配者的实例给适配器。这种方式在选择类的形式上有很大的灵活性,但是客户端感知了适配者或者适配过程。这种方法在适配器不但需要适配者对象行为而且需要特定状态时很适合。

  (2)    适配器可以自己创建适配者实例。这种方法相对来说缺乏灵活性。适用于适配器只需要适配者对象的行为而不需要适配者对象的特定状态的情况。

 
2wu05ssw243c


  Figure 20.6: Object Adapter for the CAAddress Class

  Listing 20.10: CAAddressAdapter as an Object Adapter
 

本文章更多内容<<上一页 - 1 - 2 - 3 - 4 - 5 - 下一页>>
相关文章

专家看台:真正的程序员天生爱数学
在PHPX对于 类 问题的回帖
微软将在Visual Studio开发平台中整合F#语言
个人网页中必不可少的十五大Web API
网站真的能够赚钱吗?
Linux操作系统中七件超厉害的武器
一个黑客的独白
解析:轻松接触SQL Server和嵌入式 SQL
Java上的PHP:对两者都好?
病毒专家-王江民不可思议的传奇
一等奖选手免试读北大清华
“我心飞扬”易语言编程大奖赛开始了
计算机时代的战争——黑客游戏
微软推出房屋3D模型制作工具:Virtual Eart
SQL Server 2008综合数据可编程性
免费午餐已经结束——软件历史性地向并发靠
微软公司2008新技术预览
易语言4.06正式版发布

相关评论


本文章所属分类:首页 新闻资讯

  热门关键字: