本文實例講述了Java基於外觀模式實現美食天下食譜功能。分享給大家供大家參考,具體如下:
一、模式定義
外觀模式,是軟件工程師常用的一種軟件設計模式。它為子系統中的一組接口提供一個統一的高層接口,使子系統更容易使用。外觀模式通過一個外觀接口讀/寫子系統中的各接口的數據資源,而客戶可以通過外觀接口讀取內部資源庫,不與子系統產生交互。
二、模式舉例
1. 模式分析
我們藉用美食天下菜譜中製作糖醋排骨這一道菜來說明這一模式。
2. 外觀模式靜態類圖
3. 代碼示例
3.1 創建糖醋排骨接口一ISpareribs
package com.demo.common;/** * 糖醋排骨接口* * @author * */public interface ISpareribs { // 準備材料public void prepair(); // 醃製排骨public void preserve(); // 炸排骨public void fry(); // 調汁public void juice();}3.2 糖醋排骨實現類一Spareribs
package com.demo.common;/** * * 糖醋排骨實現類* * @author * */public class Spareribs implements ISpareribs { // 準備材料@Override public void prepair() { System.out.println("1.準備豬排骨500克,蔥末、薑末、醬油、花生油、白糖、醋、料酒、鹽各適量..."); } // 醃製排骨@Override public void preserve() { System.out.println("2.將排骨洗淨剁成3厘米長段,用開水汆一下,撈出放盆內,加入鹽、醬油醃入味..."); } // 炸排骨@Override public void fry() { System.out.println("3.炒鍋注油燒至六成熱,下排骨炸至淡黃色撈出;油溫加熱至八成,再下鍋炸至金黃色撈出..."); } // 調汁@Override public void juice() { System.out .println("4.炒鍋留少許油燒熱,下入蔥花,薑末爆香,加入適量清水、醬油、醋、白糖、料酒、倒入排骨,燒開後用慢火煨至湯汁濃,排骨熟,淋上熟油,出鍋即可!"); }}3.3 創建外觀接口一ICookFacade
package com.demo.facade;/** * 外模式製作糖醋排骨* * @author * */public interface ICookFacade { // 做糖醋排骨public void cookSpareribs();}3.4 外觀實現一CookFacade
package com.demo.facade;import com.demo.common.ISpareribs;import com.demo.common.Spareribs;/** * 外模式製作糖醋排骨* * @author * */public class CookFacade implements ICookFacade { // 糖醋排骨排骨接口private final ISpareribs spareribs = new Spareribs(); // 做糖醋排骨public void cookSpareribs() { // 準備材料this.spareribs.prepair(); // 醃製排骨this.spareribs.preserve(); // 炸排骨this.spareribs.fry(); // 調汁this.spareribs.juice(); }}3.5 客戶端測試
package com.demo;import com.demo.facade.CookFacade;import com.demo.facade.ICookFacade;/** * 客戶端應用程序* * @author * */public class Client { public static void main(String[] args) { // 開始做糖醋排骨了! System.out.println("==== 開始做糖醋排骨..."); // // 創建糖醋排骨對象實例// ISpareribs spareribs = new Spareribs(); // // 準備材料// spareribs.prepair(); // // 醃製排骨// spareribs.preserve(); // // 炸排骨// spareribs.fry(); // // 調汁// spareribs.juice(); ICookFacade cookFacade = new CookFacade(); cookFacade.cookSpareribs(); System.out.println("==== 糖醋排骨製作完成!"); }}4. 運行結果
==== 開始做糖醋排骨...
1.準備豬排骨500克,蔥末、薑末、醬油、花生油、白糖、醋、料酒、鹽各適量...
2.將排骨洗淨剁成3厘米長段,用開水汆一下,撈出放盆內,加入鹽、醬油醃入味...
3.炒鍋注油燒至六成熱,下排骨炸至淡黃色撈出;油溫加熱至八成,再下鍋炸至金黃色撈出...
4.炒鍋留少許油燒熱,下入蔥花,薑末爆香,加入適量清水、醬油、醋、白糖、料酒、倒入排骨,燒開後用慢火煨至湯汁濃,排骨熟,淋上熟油,出鍋即可!
==== 糖醋排骨製作完成!
三、該模式設計原則
1 迪米特法則――最小知識原則
2 封裝變化部分
該圖進一步展示了客戶端應用程序,外觀模式和子系統內部複雜應用三者的關係.
四、使用場合
1. 一個軟件系統的複雜度比較高,需要一個更高級別的簡單接口簡化對子系統的操作時。
2. 當使用端與實現類之間有太多的依賴性,需要降低使用端與子系統或子系統間的耦合性,增加子系統的獨立性時。
3. 當子系統是相互依存的,需要層級化子系統,簡化子系統之間的相依性的時候,可以使用外觀模式。
五、外觀模式靜態類圖
更多關於java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設計有所幫助。