多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計 > 設(shè)計模式(七)門面模式(Facade)-結(jié)構(gòu)型

設(shè)計模式(七)門面模式(Facade)-結(jié)構(gòu)型

來源:程序員人生   發(fā)布時間:2015-06-27 08:33:52 閱讀次數(shù):3599次

門面模式Facade

門面模式:統(tǒng)之間的接口、框架之間的銜接

(1)使用接口的情勢來開發(fā),不需要知道接口中內(nèi)部方法的實現(xiàn);

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

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

門面模式原理圖


門面模式原理圖

不用門面設(shè)計模式的情況

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); } }

客戶端會和幾個類的聯(lián)系程度較大;為使客戶端程序盡可能的減少,我們把計算薪水的代碼塊抽取到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的封裝。

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久高清一级毛片 | 中文字幕免费在线观看 | 国产一区二区免费播放 | 美国一级淫片 | 一区二区三区 日韩 | 国产欧美日韩第一页 | 国产h视频免费观看 | www视频免费观看 | 国产欧美一区二区成人影院 | 男女在线免费视频 | 久久无码精品一区二区三区 | 国产成人久久久精品一区二区三区 | 亚洲综合图片人成综合网 | 亚洲天堂在线观看视频 | 亚洲视频 欧美视频 | 性欧美精品 | 禁视频网站在线观看漫画 | 国产一级做a爰片久久毛片99 | 国产免费福利网站 | xxxx性日本| 欧美xxxx做受欧美 | 日韩一级片在线免费观看 | 成人精品一区二区久久久 | 多人做人爱视频大全在线观看 | 久热在线视频精品网站 | 亚洲春色第一页 | 美女免费视频是免费网站 | 亚洲欧美不卡 | yellow中文字幕在线 | 外国美女一级片 | 欧美成人免费全部观看天天性色 | 日本爱爱视频网站 | 性色va| 尤物视频免费 | 亚洲tv精品一区二区三区 | 不卡欧美 | 欧美第九页| 中文字幕一区久久久久 | 久久久久久免费播放一级毛片 | 亚洲国产tv | 一级做a爱久久久久久久 |