外观模式
概念:外观模式定义了一个将子系统的一组接口结合成在一起的高层接口,以提供一个一致的界面。通过这个界面,其他系统可以方便地调用子系统的功能,而忽略子系统内部发生的变化。
例如:
完善信息
子系统的三个类:Account ,Address,idCard
桥接器:CustomerFacade
客户端:Client
如图:
public class Account{
String name;
public Account (String name){
this.name=name;
}
public boolean isValid(){
//验证方法
}
public boolean save(){
//保存方法
}
public String getName(){
return name;
}
}
//Address(属性:city) idCard (属性:idNo)类似
public class CustomerFacade{
private String name;
private Strng city;
private String idNo;
public void setName (String name){
this.name = name;
}
public void setCity (String city){
this.city= city;
}
public void setIdNo (String idNo){
this.idNo= idNo;
}
public boolean saveCustomerData(){
Address objAddress ;
Account objAccount;
idCard objidCard;
boolean valiData = true;
String errorMessage = "";
objAddress = new Address(name);
if ( objAccount.isValid() == false ){
valiData = false ;
errorMessage = "XXX";
}
objAccount = new Account(city);
...
objidCard = new idCard(idNo);
...
if ( ! valiData ){
return false;
}
if (objAddress.save() && objAccount.save() && objidCard.save() ){
return true;
}else {
return false;
}
}
}
注意事项:
1.设计外观模式时,不需要增加额外的功能
2.不要从外观模式中返回子系统的组件给客户,不能使外观模式的好处最大化
3.适合提供特定的高层次业务服务,而不是低层次的单独的业务执行