zoukankan      html  css  js  c++  java
  • GOF23设计模式之外观模式(facade)

    一、外观模式概述

      外观模式也称为门面模式。 

      核心:为了系统提供统一的入口,封装子系统的复杂性,便于客户端调用。

    二、外观模式场景导入与示例代码

      场景:要想自己去注册一个公司,首先去工商局检测命名是否合法,再去质量监督局办理组织机构代码证,再去税务局办理税务登记,最后去工商银行开户。但是使用外观模式,只需要去注册公司的门面,里边的工作人员就会去办理上述证件,简单方便!

      

     1 /**
     2  * 工商局
     3  * @author CL
     4  *
     5  */
     6 public interface AIC {
     7     void checkName();    //检测命名是否合法
     8 }
     9 
    10 /**
    11  * 陕西工商局
    12  * @author CL
    13  *
    14  */
    15 class SNAIC implements AIC {
    16 
    17     @Override
    18     public void checkName() {
    19         System.out.println("在陕西工商局检测名字是否合法!");
    20     }
    21     
    22 }
     1 /**
     2  * 质监局
     3  * @author CL
     4  *
     5  */
     6 public interface QSB {
     7     void orgCodeCertificate();    //办理组织机构代码证
     8 }
     9 
    10 class SNQSB implements QSB {
    11 
    12     @Override
    13     public void orgCodeCertificate() {
    14         System.out.println("在陕西质量监督局办理组织机构代码证!");
    15     }
    16     
    17 }
     1 /**
     2  * 税务局
     3  * @author CL
     4  *
     5  */
     6 public interface TB {
     7     void taxCertificate();    //办理税务登记证
     8 }
     9 
    10 class SNTB implements TB {
    11 
    12     @Override
    13     public void taxCertificate() {
    14         System.out.println("在陕西税务局办理税务登记!");
    15     }
    16     
    17 }
     1 /**
     2  * 工商银行
     3  * @author CL
     4  *
     5  */
     6 public interface ICBC {
     7     void openAccount();    //开户 
     8 }
     9 
    10 /**
    11  * 陕西工商银行
    12  * @author CL
    13  *
    14  */
    15 class SNICBC implements ICBC {
    16 
    17     @Override
    18     public void openAccount() {
    19         System.out.println("在陕西工商银行开户!");
    20     }
    21     
    22 }

      (1)不使用外观模式,自己去注册公司

     1 /**
     2  * 自己去注册公司
     3  * @author CL
     4  *
     5  */
     6 public class Client {
     7     
     8     public static void main(String[] args) {
     9         AIC aic = new SNAIC();
    10         aic.checkName();
    11         
    12         QSB qsb = new SNQSB();
    13         qsb.orgCodeCertificate();
    14         
    15         TB tb = new SNTB();
    16         tb.taxCertificate();
    17         
    18         ICBC icbc = new SNICBC();
    19         icbc.openAccount();
    20     }
    21 
    22 }

      控制台输出:

    在陕西工商局检测名字是否合法!
    在陕西质量监督局办理组织机构代码证!
    在陕西税务局办理税务登记!
    在陕西工商银行开户!

      (2)使用外观模式去注册公司

     1 /**
     2  * 注册公司的门面对象
     3  * @author CL
     4  *
     5  */
     6 public class RegisterFacade {
     7 
     8     public void register() {
     9         AIC aic = new SNAIC();
    10         aic.checkName();
    11         
    12         QSB qsb = new SNQSB();
    13         qsb.orgCodeCertificate();
    14         
    15         TB tb = new SNTB();
    16         tb.taxCertificate();
    17         
    18         ICBC icbc = new SNICBC();
    19         icbc.openAccount();
    20     }
    21 }
     1 /**
     2  * 测试使用外观模式去注册公司
     3  * @author CL
     4  *
     5  */
     6 public class Client {
     7     
     8     public static void main(String[] args) {
     9         RegisterFacade register = new RegisterFacade();
    10         register.register();
    11     }
    12 
    13 }

      控制台输出:

    在陕西工商局检测名字是否合法!
    在陕西质量监督局办理组织机构代码证!
    在陕西税务局办理税务登记!
    在陕西工商银行开户!

    三、外观模式常用开发应用场景

      (1)JDBC封装后的,commons提供的DBUtils类,Hibernate提供的工具类,Spring JDBC工具类;

      (2)…………

  • 相关阅读:
    HDU1171(01背包均分问题)
    HDU2159(完全背包)
    HDU1203(01背包变形)
    DAG上的DP
    ADB命令小结
    HDU3065(AC自动机入门题)
    HDU2896(AC自动机入门题)
    性能测试监控分析(13)-sysstat安装升级
    tomcat(9)-linux apache tomcat集群环境搭建
    nginx(4)-负载均衡的5种策略及原理
  • 原文地址:https://www.cnblogs.com/cao-lei/p/8327790.html
Copyright © 2011-2022 走看看