您好,登錄后才能下訂單哦!
本篇內容介紹了“Java外觀模式示例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
外觀模式為多個復雜的子系統,提供了一個一致的界面,使得調用端只和這個接口發生調用,而無須關系這個子系統內部的細節
看電影的時候需要進行一系列的操作,比如打開播放器,放下屏幕,打開投影儀,打開音響等,這個要怎么進行管理呢
定義播放器類
public class Player { private static Player player = new Player(); private Player(){} public static Player getInstance(){ return player; } public void on(){ System.out.println("打開播放器"); } public void off(){ System.out.println("關閉播放器"); } public void play(){ System.out.println("使用播放器播放電影"); } public void pause(){ System.out.println("暫停播放器"); } public void select(){ System.out.println("選擇喜歡的電影"); } }
定義投影儀類
public class Projector { private static Projector projector = new Projector(); private Projector(){} public static Projector getInstance(){ return projector; } public void on(){ System.out.println("放下屏幕,打開投影儀"); } public void off(){ System.out.println("關閉投影儀"); } public void focus(){ System.out.println("調節投影儀焦距"); } public void zoom(){ System.out.println("投影儀變焦"); } }
定義音響類
public class Stereo { private static Stereo stereo = new Stereo(); private Stereo(){} public static Stereo getInstance(){ return stereo; } public void on(){ System.out.println("打開音響"); } public void off(){ System.out.println("關閉音響"); } public void setVolume(){ System.out.println("調節音響音量"); } }
定義爆米花機類
/** * 爆米花機 * @author:liyajie * @createTime:2022/3/2 14:24 * @version:1.0 */ public class Popcorn { private static Popcorn popcorn = new Popcorn(); private Popcorn(){} public static Popcorn getInstance(){ return popcorn; } public void on(){ System.out.println("打開爆米花機"); } public void off(){ System.out.println("關閉爆米花機"); } public void pop(){ System.out.println("制作爆米花"); } }
定義家庭影院外觀類
public class HomeTheaterFacade { // 聚合各個子系統 private Player player; private Popcorn popcorn; private Projector projector; private Stereo stereo; public HomeTheaterFacade(){ } // 全參構造器 public HomeTheaterFacade(Player player, Popcorn popcorn,Projector projector,Stereo stereo){ this.player = player; this.popcorn = popcorn; this.projector = projector; this.stereo = stereo; } // 準備階段 public void ready(){ popcorn.on(); player.on(); projector.on(); stereo.on(); } // 播放 public void play(){ player.select(); popcorn.pop(); projector.focus(); stereo.setVolume(); } // 結束 public void end(){ player.off(); popcorn.off(); projector.off(); stereo.off(); } }
定義測試類
public class Test { public static void main(String[] args) { HomeTheaterFacade homeTheaterFacade = new HomeTheaterFacade(Player.getInstance(),Popcorn.getInstance(),Projector.getInstance(),Stereo.getInstance()); homeTheaterFacade.ready(); homeTheaterFacade.play(); homeTheaterFacade.end(); } }
查看測試結果
我們通過家庭影院外觀類HomeTheaterFacade的ready,play,end方法操作了播放器,投影儀等的打開,關閉,對于家庭影院外觀類來說,他是不需要知道播放器,投影儀等的打開,關閉具體是怎么樣實現的。在一定程度上實現了解耦,易維護和擴展。
優勢:
1.外觀模式對外屏蔽了子系統的實現細節(安全性)
2.外觀模式降低了客戶端與子系統交互的復雜性,對客戶端和子系統進行解耦合,子系統內部的模塊更容易維護和擴展
3.通過合理的使用外觀模式,可以幫助我們更好的劃分訪問層次
使用場景
1.對分層的系統進行構建時,使用外觀模式可以簡化子系統之間的依賴關系
2.當有一個復雜的系統,里面有很多子系統,有大量的操作,這時候可以使用外觀模式
3.當客戶端與多個子系統之間存在很多耦合時,引入外觀模式,可以將他們分離,提高子系統的獨立性和可移植性
“Java外觀模式示例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。