核心:
为子系统提供统一的入口,封装子系统的复杂性,便于客户端调用
使用频率很高
使用外观模式模拟注册公司
package com.bjsxt.structure.facade;
public interface 工商局 {
void checkName(); //核名
}
class 海淀区工商局 implements 工商局 {
@Override
public void checkName() {
System.out.println("检查名字是否有冲突");
}
}
package com.bjsxt.structure.facade;
public interface 税务局 {
void taxCertificate(); // 办理税务登记证
}
class 海淀区税务局 implements 税务局 {
@Override
public void taxCertificate() {
System.out.println("在海淀区办理税务登记证");
}
}
package com.bjsxt.structure.facade;
public interface 质监局 {
void orgCodeCertificate(); // 办理组织机构代码证
}
class 海淀区质监局 implements 质监局 {
@Override
public void orgCodeCertificate() {
System.out.println("在海淀区质监局办理组织机构代码证");
}
}
package com.bjsxt.structure.facade;
public interface 银行 {
void openAccout(); //开户
}
class 中国工商银行 implements 银行 {
@Override
public void openAccout() {
System.out.println("在中国工商银行开户");
}
}
不使用外观模式时需要与各个类发生交互
package com.bjsxt.structure.facade;
/**
* 不使用外观模式
* @author WL20180732
*
*/
public class Client {
public static void main(String[] args) {
工商局 a = new 海淀区工商局();
a.checkName();
质监局 b = new 海淀区质监局();
b.orgCodeCertificate();
税务局 c = new 海淀区税务局();
c.taxCertificate();
银行 d = new 中国工商银行();
d.openAccout();
}
}
提供门面
package com.bjsxt.structure.facade;
/**
* 注册公司的门面(对外入口)
* @author WL20180732
*
*/
public class RegisteFacade {
public void regist() {
工商局 a = new 海淀区工商局();
a.checkName();
质监局 b = new 海淀区质监局();
b.orgCodeCertificate();
税务局 c = new 海淀区税务局();
c.taxCertificate();
银行 d = new 中国工商银行();
d.openAccout();
}
}
6.使用外观模式,只要与门面发生交互即可
package com.bjsxt.structure.facade;
/**
* 使用外观模式
* @author WL20180732
*
*/
public class Client2 {
public static void main(String[] args) {
RegisteFacade facade = new RegisteFacade();
facade.regist();
}
}