日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 設計模式(七)門面模式(Facade)-結構型

設計模式(七)門面模式(Facade)-結構型

來源:程序員人生   發布時間:2015-06-27 08:33:52 閱讀次數:3607次

門面模式Facade

門面模式:統之間的接口、框架之間的銜接

(1)使用接口的情勢來開發,不需要知道接口中內部方法的實現;

(2)門面模式就是為子系統對外提供的1組接口提供1個統1的界面,使得其他系統對該系統的訪問都通過這個統1的界面來完成。

(3)當1個負載的系統需要對外提供接口時,就需要將對提供的接口統1封裝在外觀類里,供外系統使用。

門面模式原理圖


門面模式原理圖

不用門面設計模式的情況

Holiday.java

public class Holiday { public double getHoliday(String empno) { return 2; } }

Salary.java

public class Salary { public double getSalary(String empno){ return 2000; } }

Tax.java

public class Tax { public double getTax(String empno) { return 0; } }

客戶端Client.java

public class Client { public static void main(String[] args) { Salary salary = new Salary(); Holiday holiday = new Holiday(); Tax tax = new Tax(); double money = salary.getSalary("100222") * holiday.getHoliday("100222")/30 - tax.getTax("100222"); System.out.println(money); } }

客戶端會和幾個類的聯系程度較大;為使客戶端程序盡可能的減少,我們把計算薪水的代碼塊抽取到1個類里:

SalaryComputer.java

public class SalaryCoumputer { public double doSalary() { Salary salary = new Salary(); Holiday holiday = new Holiday(); Tax tax = new Tax(); double money = salary.getSalary("100222") * holiday.getHoliday("100222")/30 - tax.getTax("100222"); return money; } }

客戶端程序變成:

public class Client { public static void main(String[] args) { SalaryCoumputer salaryCoumputer = new SalaryCoumputer(); System.out.println(salaryCoumputer.doSalary()); } }

如果有多個計算薪水,就不合適了,所以可以再把計算薪水的類換成1個接口

Computer.java

public interface Computer { public double doSalary(String empno); }

SalaryComputer.java

public class SalaryCoumputer implements Computer{ public double doSalary(String empno) { Salary salary = new Salary(); Holiday holiday = new Holiday(); Tax tax = new Tax(); double money = salary.getSalary("100222") * holiday.getHoliday("100222")/30 - tax.getTax("100222"); return money; } }

 1個專門讀取properties屬性文件的類

public class PropertiesUtil { static Properties p = new Properties(); public static Object getInstance() { InputStream in = null; Object obj = null; try { in = PropertiesUtil.class.getClassLoader().getResourceAsStream("class.properties"); p.load(in); } catch (IOException e) { e.printStackTrace(); } finally{ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } try { obj = (Object) Class.forName((String) PropertiesUtil.getValue("class")).newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return obj; } public static Object getValue(String key) { return p.get(key); } }

Client.java

public class Client { public static void main(String[] args) { Computer computer = (Computer)PropertiesUtil.getInstance(); System.out.println(computer.doSalary("100222")); } }

利用如:JDBC的封裝springJDBC的封裝。

使用環境和優點 
《設計模式》給出了門面模式的使用環境: 
(1)當你要為1個復雜子系統提供1個簡單接口時。在上面已描寫了緣由。 
(2) 客戶程序與抽象類的實現部份之間存在著很大的依賴性。引入 facade 將這個子系統與客戶和其他的子系統分離,可以提高子系統的獨立性和可移植性(上面也提到了)。 
(3)當你需要構建1個層次結構的子系統時,使用 facade 模式定義子系統中每層的入口點。如果子系統之間是相互依賴的,你可讓它們僅通過 facade 進行通訊,從而簡化了它們之間的依賴關系。 
優點: 
(1)它對客戶屏蔽子系統組件,因此減少了客戶處理的對象的數目并使得子系統使用起來更加方便。 
(2)它實現了子系統與客戶之間的松耦合關系,而子系統內部的功能組件常常是緊耦合的。松耦合關系使得子系統的組件變化不會影響到它的客戶。 Facade 模式有助于建立層次結構系統,也有助于對對象之間的依賴關系分層。 Facade 模式可以消除復雜的循環依賴關系。這1點在客戶程序與子系統是分別實現的時候尤其重要。在大型軟件系統中下降編譯依賴性相當重要。在子系統類改變時,希望盡可能減少重編譯工作以節省時間。用 Facade 可以下降編譯依賴性,限制重要系統中較小的變化所需的重編譯工作。 Facade 模式一樣也有益于簡化系統在不同平臺之間的移植進程,由于編譯1個子系統1般不需要編譯所有其他的子系統。 
(3) 如果利用需要,它其實不限制它們使用子系統類。因此你可讓客戶程序在系統易用性和通用性之間加以選擇。 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 黄色免费在线视频 | 国产一区二区三区片 | 国产午夜亚洲精品理论片色戒 | 国产精品日韩欧美一区二区三区 | 国产主播精品 | 欧洲成人精品 | 亚洲福利天堂 | 国产精品三级在线 | 在线一区 | 国产a网| 久久久鲁 | 国产伦精品一区二区三区免费 | 日韩三区三区一区区欧69国产 | 黄网免费看| 国产精品国产三级国产专播品爱网 | 久久久久久麻豆 | 日本一区二区三区免费在线 | 一级黄色片一 | 欧美日韩中文字幕 | 看黄在线观看 | 欧美一级在线观看 | 亚洲色图网站 | 亚洲欧美日韩精品 | 综合久久精品 | 成人国产在线观看 | 国产不卡一二三区 | 亚洲成a | 夜夜操导航 | 午夜国产| 久久91久久 | 98色花堂永久在线网站 | 亚洲综合色自拍一区 | 99re在线视频| 日韩欧美一区二区在线 | 国产精品欧美一区二区三区不卡 | 91久久久久久久久 | 涩涩网页| 国产精品久久久久久 | 五月婷婷天 | 亚洲福利视频在线 | 粉嫩久久99精品久久久久久夜 |