外观模式
外观模式也叫门面模式,是开发过程中使用频率非常高的一种设计模式,但非常容易理解。
概念介绍
外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。
代码案例
模拟办理公司的流程
具体实现
/** * 银行 * @author 波波烤鸭 * @email dengpbs@163.com * */ public interface Bank { void openAccount(); //开户 } class ICBC implements Bank { @Override public void openAccount() { System.out.println("在中国工商银行开户!"); } }
/** * 工商局 * @author 波波烤鸭 * @email dengpbs@163.com * */ public interface IACA { void checkName(); //核名 } class SzIACA implements IACA { @Override public void checkName() { System.out.println("检查名字是否有冲突!"); } }
/** * 质检局 * @author 波波烤鸭 * @email dengpbs@163.com * */ public interface Qc { void orgCodeCertificate(); //办理组织机构代码证 } class SzQc implements Qc { @Override public void orgCodeCertificate() { System.out.println("在深圳质检局办理组织机构代码证!"); } }
门面类
/** * 办理注册公司流程的门面对象 * @author 波波烤鸭 * @email dengpbs@163.com * */ public class RegisterFacade { public void register(){ IACA a = new SzIACA(); a.checkName(); Qc b = new SzQc(); b.orgCodeCertificate(); Revenue c = new SzRevenue(); c.taxCertificate(); Bank d = new ICBC(); d.openAccount(); } }
测试
public static void main(String[] args) { /*IACA a = new SzIACA(); a.checkName(); Qc b = new SzQc(); b.orgCodeCertificate(); Revenue c = new SzRevenue(); c.taxCertificate(); Bank d = new ICBC(); d.openAccount();*/ // 通过门面类 来实现公司的注册 new RegisterFacade().register(); }
输出结果:
检查名字是否有冲突! 在深圳质检局办理组织机构代码证! 在深圳税务局办理税务登记证! 在中国工商银行开户!
开发中常见的场景
频率很高。哪里都会遇到。
各种技术和框架中,都有外观模式的使用。
JDBC封装后的,
commons提供的DBUtils类,
Hibernate提供的工具类、
Spring JDBC工具