外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
简单的说,外观模式就是把复杂的系统的具体操作封装起来,只暴露一个简单的接口,做和众多子系统之间松耦合。
提到一个设计原则:最少知识原则,只和你的密友谈话。(HeadFirst中的描述)具体的说就是让类和类之间尽量松耦合,类与类之间的依赖降到最低,各司其职。
迪米特法则:一个软件实体应当尽可能少的与其他实体发声相互作用。
用一个注册公司的系统来说明问题:
AIC 工商局
BQS 质监局
Bank 银行
TaxB 税务局
public interface AIC {
void checkName();
}
class BJAIC implements AIC {
@Override
public void checkName() {
System.out.println("检查名字是否有冲突!");
}
}
public interface BQS {
void orgCodeCertificate(); //办理组织机构代码证
}
class BJBQS implements BQS {
@Override
public void orgCodeCertificate() {
System.out.println("在北京质检局办理组织机构代码证!");
}
}
public interface Bank {
void openAccount(); //开户
}
class BJBank implements Bank {
@Override
public void openAccount() {
System.out.println("在北京银行开户!");
}
}
public interface TaxB {
void taxCertificate(); //办理税务登记证
}
class BJTaxB implements TaxB {
@Override
public void taxCertificate() {
System.out.println("在北京税务局办理税务登记证!");
}
}
public class RegisterFacade {
public void register(){
AIC a = new BJAIC();
a.checkName();
BQS b = new BJBQS();
b.orgCodeCertificate();
TaxB c = new BJTaxB();
c.taxCertificate();
Bank d = new BJBank();
d.openAccount();
}
}
public class Client {
public static void main(String[] args) {
//使用外观模式之后注册公司就是这么简单!!还有谁!!
new RegisterFacade().register();
}
}
原文:http://www.cnblogs.com/wxisme/p/4541085.html