敏捷式軟體開發 (Agile Software Development) – FACADE模式和MEDIATOR模式

來源:互聯網
上載者:User

標籤:

FACADE模式

  Db類使得Application類不需要瞭解System.Data命名空間中的內部細節。它把System.Data的所有通用性和複雜性隱藏在一個非常簡單且特定的介面後面。

  像Db這樣的FACADE類對System.Data的使用施加了許多規約。它知道如何初始化和關閉資料庫連接。它知道如何將ProductData的成員變數轉換成資料庫欄位,或反之。它知道如何去構建合適的查詢和命令去操縱資料庫。它對使用者隱藏了所有的複雜性。在Application看來,System.Data是不存在的,它隱藏在FACADE後面。

  使用FACADE模式意味著開發人員已經接受了所有資料庫調用都要通過Db類的約定。如果Application的任意一部分代碼越過該FACADE直接去訪問System.Data,那麼就違反了該約定。像這樣,該FACADE對Application施加了它的規約。基於約定,Db類稱為了System.Data的唯一代理。

  可以使用FACADE對程式的任何部分進行隱藏。不過,最常見的做法是使用FACADE來隱藏資料庫,因此該模式也稱為TABLE DATA GATEWAY。

MEDIATOR模式

  MEDIATOR模式同樣也是施加規約。不過,FACADE模式是以可見且強制的方式施加它的規約,而MEDIATOR模式則是以隱藏切自由的方式來施加它的規約的。

using System;using System.win.Windows.Form;public class QuickEntryMediator{    private TextBox itsTextField;    private ListBox itsList;    public QuickEntryMediator(TextBox t, ListBox l)    {        itsTextField = t;        itsList = l;        itsTextField.TextChagned += new EventHandler(TextFieldChanged);    }    private void TextFieldChanged(object sender, EventArgs args)    {        String prefix = itsTextField.getText();        if (prefix.length() == 0)        {            itsList.ClearSelection();            return;        }        ListBox.ObjectCollection listItems = itsList.Items;        boolean found = false;        for (int i = 0; found == false && i < listItems.Count; i++)        {            Object o = listItems[i];            String s = o.ToString();            if (s.StartsWith(prefix))            {                itsList.SetSelected(i, true);                found = true;            }        }        if (!found)        {            itsList.ClearSelection();        }    }}

  ListBox和TextBox的使用者並不知道該MEDIATOR的存在。它安靜的獃著,把它的規約施加在那些對象上,而無需它們的允許或知曉。

結論

  如果規約涉及的範圍廣泛並且可見,那麼可以使用FACADE模式從上施加規約。另一方面,如果規約設計的範圍較小並且可以自由定製,那麼MEDIATOR模式是更好的選擇。FACADE模式通常是約定的關注點。每個人都同意去使用該FACADE而不是隱藏於其下的對象。另一方面,MEDIATOR則對使用者是隱藏的。它的規約是既成事實而不是一項約定事務。

 

 

摘錄自:[美]RobertC.Martin、MicahMartin著,鄧輝、孫鳴譯 敏捷式軟體開發 (Agile Software Development)原則、模式與實踐(C#版修訂版) [M]、人民郵電出版社,2013、240-243、

敏捷式軟體開發 (Agile Software Development) – FACADE模式和MEDIATOR模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.