GOF23设计模式以外观模式(facade)

1、外观模式概述

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

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

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

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

  

 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)不使用外观模式,本身去注册公司spa

 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 }

  控制台输出:code

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

  (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 }

  控制台输出:blog

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

3、外观模式经常使用开发应用场景

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

  (2)…………class

相关文章
相关标签/搜索