
一、外观模式概述
外观模式也称为门面模式。
核心:为了系统提供统一的入口,封装子系统的复杂性,便于客户端调用。
二、外观模式场景导入与示例代码
场景:要想自己去注册一个公司,首先去工商局检测命名是否合法,再去质量监督局办理组织机构代码证,再去税务局办理税务登记,最后去工商银行开户。但是使用外观模式,只需要去注册公司的门面,里边的工作人员就会去办理上述证件,简单方便!
/**
* 工商局
* @author CL
*
*/
public interface AIC {
void checkName(); //检测命名是否合法
} /**
* 陕西工商局
* @author CL
*
*/
class SNAIC implements AIC { @Override
public void checkName() {
System.out.println("在陕西工商局检测名字是否合法!");
} }
/**
* 质监局
* @author CL
*
*/
public interface QSB {
void orgCodeCertificate(); //办理组织机构代码证
} class SNQSB implements QSB { @Override
public void orgCodeCertificate() {
System.out.println("在陕西质量监督局办理组织机构代码证!");
} }
/**
* 税务局
* @author CL
*
*/
public interface TB {
void taxCertificate(); //办理税务登记证
} class SNTB implements TB { @Override
public void taxCertificate() {
System.out.println("在陕西税务局办理税务登记!");
} }
/**
* 工商银行
* @author CL
*
*/
public interface ICBC {
void openAccount(); //开户
} /**
* 陕西工商银行
* @author CL
*
*/
class SNICBC implements ICBC { @Override
public void openAccount() {
System.out.println("在陕西工商银行开户!");
} }
(1)不使用外观模式,自己去注册公司
/**
* 自己去注册公司
* @author CL
*
*/
public class Client { public static void main(String[] args) {
AIC aic = new SNAIC();
aic.checkName(); QSB qsb = new SNQSB();
qsb.orgCodeCertificate(); TB tb = new SNTB();
tb.taxCertificate(); ICBC icbc = new SNICBC();
icbc.openAccount();
} }
控制台输出:
在陕西工商局检测名字是否合法!
在陕西质量监督局办理组织机构代码证!
在陕西税务局办理税务登记!
在陕西工商银行开户!
(2)使用外观模式去注册公司
/**
* 注册公司的门面对象
* @author CL
*
*/
public class RegisterFacade { public void register() {
AIC aic = new SNAIC();
aic.checkName(); QSB qsb = new SNQSB();
qsb.orgCodeCertificate(); TB tb = new SNTB();
tb.taxCertificate(); ICBC icbc = new SNICBC();
icbc.openAccount();
}
}
/**
* 测试使用外观模式去注册公司
* @author CL
*
*/
public class Client { public static void main(String[] args) {
RegisterFacade register = new RegisterFacade();
register.register();
} }
控制台输出:
在陕西工商局检测名字是否合法!
在陕西质量监督局办理组织机构代码证!
在陕西税务局办理税务登记!
在陕西工商银行开户!
三、外观模式常用开发应用场景
(1)JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类,Spring JDBC工具类;
(2)…………