2007年7月30日 星期一

C18 View的設計(3)──進入Controller

這層設計的一開始,要先決定View進入Controller的對應事件與傳遞的物件。在一開始的基礎關係,每個功能會有自己的View,自己的Controller,如果不去抽取相同的部分就會得到前面提到的大學生程式類型,造成每個功能都有一大堆重覆的程式碼。我們可以在View與Controller之間使用Façade Design Pattern作為唯一入口,在執行事件的Service裡把View的欄位與值在listener包裝成適當Model傳入Controller。

以Façade類別作為分界點,無論使用哪一種GUI元件開發顯示畫面,只要在進入執行時傳入指定的Model,後面的Controller都可以正常地處理;反過來看,只要Controller都符合傳入Model的介面,把畫面的Listener組成該Controller所需的Model就可以呼叫它。這便是用來應付可能發生的變化的設計應對。

許多經驗較少的人把交易的邏輯寫在顯示的類別裡,在處理資料的時候直接對顯示物件操作。由於指定物件本身的類別名稱,就會造成處理與顯示之間的密合而無法隨意更換,這樣的設計就像是一體成型的機器人手臂;因此我們需要在意義不同的層次上加工製作隔開兩邊的介面物件,藉此來達到可以抽換另一端實際執行物件的活動機制。

沒有留言:

張貼留言