外观模式(Facade pattern)
前景
迪米特法则(最少知识原则):一个软件实体应当尽可能少的与其他实体发生相互作用概念
假设酒店的所有服务员都可以收款,为了方便,设立一个服务台,所有顾客都要到服务台买单
术语:为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用,又称门面模式
应用场景(很常用)
1:JDBC封装后的commons提供的DBUtils类2:Hibernate提供的工具类
3:Spring JDBC工具类
案例(注册企业)
税务局/*
* 税务局登记
*/
public interface Tax {
public abstract void sign();
}
class XuzhouTax implements Tax{
public void sign() {
System.err.println("您已经在徐州税务局登记办理!");
}
}
质检局
/*
* 质检局检测产品
*/
public interface Check {
public abstract void check();
}
class XuzhouCheck implements Check{
public void check() {
System.out.println("您的企业产品已经通过徐州质检局检测!");
}
}
银行
/*
* 银行开户
*/
public interface Bank {
public abstract void open();
}
class PostBank implements Bank{
public void open() {
System.out.println("您已经在邮局开户!");
}
}
门面,代理者
/*
* 门面,外观模式之代理人
*/
public class Register {
public void regist(){
//税务局登记
Tax tax = new XuzhouTax();
tax.sign();
//质检局检测
Check check = new XuzhouCheck();
check.check();
//银行开户
Bank bank = new PostBank();
bank.open();
}
}
客户端测试
public class Client {
public static void main(String[] args) {
new Register().regist();
}
}
console:
您已经在徐州税务局登记办理!
您的企业产品已经通过徐州质检局检测!
您已经在邮局开户!
UML类图
![](https://i-blog.csdnimg.cn/blog_migrate/d1a9c9fff89a75fc0559983421b31e01.png)