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

相關文章
相關標籤/搜索