外观模式核心:
-为子系统提供统一的入口。封装子系统的复杂性,便于客户端调用。
开发中常见的场景:
频率很高。哪里都会遇到。各种技术和框架中,都有外观模式的使用。如:JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类、Spring JDBC工具类等
基本案例
-注册公司流程(不适用外观模式)
注册公司使用外观模式UML及源码
public interface 工商局 {
void checkName();//核名
}
class 济南市工商局 implements 工商局{
@Override
public void checkName() {
System.out.println("核查名字是否有冲突");
}
}
public interface 税务局 {
void taxCertificate();//办理税务登记证
}
class 济南市税务局 implements 税务局{
@Override
public void taxCertificate() {
System.out.println("在济南税务局办理税务登记证");
}
}
public interface 银行 {
void openAccount();
}
class 工商银行 implements 银行{
@Override
public void openAccount() {
System.out.println("在工商银行开户");
}
}
public interface 质检局 {
void orgCodeCertificate();//办理组织机构代码证
}
class 济南市质检局 implements 质检局{
@Override
public void orgCodeCertificate() {
System.out.println("在济南市质检局办理组织机构代码证");
}
}
/**
* 外观模式门面对象
* @author 万河归海
*
*/
public class RegisterFacade {
public void register(){
工商局 g = new 济南市工商局();
g.checkName();
税务局 s = new 济南市税务局();
s.taxCertificate();
银行 y = new 工商银行();
y.openAccount();
质检局 z = new 济南市质检局();
z.orgCodeCertificate();
}
}
public class Test {
public static void main(String[] args) {
RegisterFacade rf = new RegisterFacade();
rf.register();
}
}