外觀模式也稱爲門面模式。 ide
核心:爲了系統提供統一的入口,封裝子系統的複雜性,便於客戶端調用。工具
場景:要想本身去註冊一個公司,首先去工商局檢測命名是否合法,再去質量監督局辦理組織機構代碼證,再去稅務局辦理稅務登記,最後去工商銀行開戶。可是使用外觀模式,只須要去註冊公司的門面,裏邊的工做人員就會去辦理上述證件,簡單方便!測試
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
在陝西工商局檢測名字是否合法! 在陝西質量監督局辦理組織機構代碼證! 在陝西稅務局辦理稅務登記! 在陝西工商銀行開戶!
(1)JDBC封裝後的,commons提供的DBUtils類,Hibernate提供的工具類,Spring JDBC工具類;開發
(2)…………class