設計模式——面板模式

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   使用   ar   strong   2014   

面板模式定義:提供一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。

    面板模式可以用來簡化介面,之所以稱其為“外觀”,是因為一般外觀是用來展現給使用者的,所以一般外觀都做得比較簡單時尚,用來隱藏後面複雜的邏輯。

    比如很多電腦都有“一鍵影音”功能,當按下“一鍵影音”鍵的時候,電腦需要調整音效,音量,螢幕亮度等等。這裡可能會讓人聯想到“命令模式”,但是我們這裡不關注命令的傳遞,而是關注具體如何執行。    我們可以在一個具體的類中預定義一組操作(包括各個影音器件的開啟功能),當這個類的某個方法被觸發的時候,這些功能的開啟方法都會被觸發,從而就達到了簡化的目的。外觀展現給使用者的只需要執行個體化這個具體的類,然後調用相應的啟動方法,而無需手動開啟每一個器件。 針對這個例子的具體編碼如下:
 1 /** 2  * 聲音介面 3  * @author Apache_xiaochao 4  * 5  */ 6 public interface Voice { 7      8     /** 9      * 開啟聲音10      */11     void on();12     /**13      * 關閉聲音14      */15     void off();16 17 }
 1 /** 2  * 螢幕介面 3  * @author Apache_xiaochao 4  * 5  */ 6 public interface Screen { 7      8     /** 9      * 調亮螢幕10      */11     void dodge();12     /**13      * 調暗螢幕14      */15     void dimming();16 17 }
/** * 電腦聲音類 * @author Apache_xiaochao * */public class PCVoice implements Voice {    @Override    public void on() {        System.out.println("開啟聲音!");    }    @Override    public void off() {        System.out.println("關閉聲音!");    }}
/** * 電腦螢幕類 * @author Apache_xiaochao * */public class PCScreen implements Screen {    @Override    public void dodge() {        System.out.println("亮度增加!");    }    @Override    public void dimming() {        System.out.println("亮度降低!");    }}

上面是一些基礎類,下面是面板模式的主角:

 1 /** 2  * 一鍵影音 3  *  4  * @author Apache_xiaochao 5  *  6  */ 7 public class OnekeyTheater { 8  9     private Voice voice;10     private Screen screen;11 12     public OnekeyTheater(Voice voice, Screen screen) {13         super();14         this.voice = voice;15         this.screen = screen;16     }17 18     /**19      * 開啟一鍵影音功能20      */21     public void start() {22         voice.on();23         screen.dodge();24     }25 26     /**27      * 關閉一鍵影音功能28      */29     public void close() {30         voice.off();31         screen.dimming();32     }33 34 }
 1 public class Driver { 2  3     public static void main(String[] args) { 4         Voice voice = new PCVoice(); 5         Screen screen = new PCScreen();         6         OnekeyTheater onekeyTheater = new OnekeyTheater(voice, screen); 7         onekeyTheater.start(); //在這裡可以進行一鍵操作,同時觸發多個裝置 8         onekeyTheater.close(); //在這裡可以進行一鍵操作,同時關閉多個裝置 9     }10 11 }
面板模式的意圖是要提供一個簡單的介面,好讓一個子系統更便於使用。當需要簡化並統一一個很大的介面或者一群複雜的介面時,使用面板模式。 

設計模式——面板模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.