您的位置:首页 > 编程语言 > Java开发

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设计模式之适配器模式》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息