java适配器模式
2008-07-02 13:42
375 查看
public interface AddressValidator { public boolean isValidAddress(String address, String zip, String state); } public class USAddressValidator implements AddressValidator { @Override public boolean isValidAddress(String address, String zip, String state) { // TODO Auto-generated method stub if (address.trim().length() < 10) return false; if (zip.trim().length() < 5) return false; if (zip.trim().length() > 10) return false; if (state.trim().length() != 2) return false; return true; } } public class Customer { public static final String US = "US"; public static final String CANADA = "Canada"; private String address; private String name; private String zip; private String state; private String type; public boolean isValidAddress() { boolean valid = false; AddressValidator addressValidator = getAddressValidator(type); valid = addressValidator.isValidAddress(address, zip, state); return valid; } public Customer(String address, String name, String state, String type, String zip) { super(); this.address = address; this.name = name; this.state = state; this.type = type; this.zip = zip; } public AddressValidator getAddressValidator(String type) { if (type.equals(US)) { return new USAddressValidator(); } return null; } public String getType() { return type; } } public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Customer uCustomer = new Customer("Great Street 8", "Joey", "NY", "US", "55555"); System.out.println("The " + uCustomer.getType() + " Address is " + uCustomer.isValidAddress()); } }
public class Customer { ... public boolean isValidAddress() { boolean valid = false; if (type.equals(US)) { AddressValidator addressValidator = getAddressValidator(type); valid = addressValidator.isValidAddress(address, zip, state); } if (type.equals(CANADA)) { valid = new CanadaAddressValidator().isValidCanadaAddress(address, zip, state); } return valid; } ... } 方法2: 创建一个适配器
public class CanadaAddressValidatorAdapter extends CanadaAddressValidator implements AddressValidator { @Override public boolean isValidAddress(String address, String zip, String state) { // TODO Auto-generated method stub return super.isValidCanadaAddress(address, zip, state); } }
package com.tang; public class Customer { ... public boolean isValidAddress() { boolean valid = false; AddressValidator addressValidator = getAddressValidator(type); valid = addressValidator.isValidAddress(address, zip, state); return valid; } public AddressValidator getAddressValidator(String type) { if (type.equals(US)) { return new USAddressValidator(); } if (type.equals(CANADA)) { return new CanadaAddressValidatorAdapter(); } return null; } ... } 本文参考了《深入浅出Java设计模式之适配器模式》
相关文章推荐
- Java设计模式(02--适配器模式)
- java设计模式(简例)----适配器模式
- JAVA设计模式(06):结构型-适配器模式(Adapter)
- Java编程思想笔记02:组合与继承、final、策略设计模式与适配器模式、内部类、序列化控制(注意事项)
- 适配器模式(Java)
- Java设计模式(六):适配器模式Adapter
- 【JAVA】设计模式之适配器模式(Adapter模式)的使用分析
- java笔记--适配器模式的运用
- Java设计模式之适配器模式
- Java设计模式 — 适配器模式
- 一起学java设计模式--适配器模式(结构型模式)
- Java设计模式7:适配器模式
- (6)Java设计模式-适配器模式(Adapter)
- JAVA设计模式-----适配器模式
- java模式之适配器模式
- 亲身实践,JAVA最优良的Adapter模式--适配器模式
- java设计模式之适配器模式
- Java设计模式之适配器模式
- Java设计模式之适配器模式
- Java设计模式透析之——适配器模式