l

2014年4月21日 星期一

重新整理Facade Pattern,Take 2

Mar. 21 09:20~09:45

image

 

看過重新整理第二次的Factory Method與Singleton之後,今天輪到Facade。先看一下第一版的內容:

Name:Facade (take 1)

Context:當一個系統越來越龐大的時候,如果沒有好好規劃系統結構,整個系統內部物件之間的關聯性很容易變得過於複雜,最後導致牽一髮而動全身;除了影響開發速度,也很容易導致不預期的程式錯誤。一種常見的結構化方式是將系統依據功能劃分為若干個子系統,子系統內部的物件允許較緊密的關聯,而子系統之間則應該要儘量降低其相依性。

Problem:如何使用子系統?

Force:

  • 一個子系統可能會有很多個客戶端使用它,我們不希望子系統內部的改變,即使是非常輕微的異動,將會導致客戶端需要跟著改變。
  • 如果子系統的使用方式過於複雜,客戶端會被迫必須了解很多子系統的細節,這樣將會增加客戶端的學習曲線、提高客戶端與子系統內部的相依性,甚至可能會導致客戶端拒絕使用子系統而走向自行開發的道路。

Solution:提供一個存取子系統內部各項服務的單一介面,讓子系統變得更容易使用,並且可隔離客戶端程式對子系統內部元件的相依性。

***

重新整理Facade的過程中,發現原本第一版的內容暫時想不到有什麼需要修改之處,所以就先維持原狀,但是多寫了一個生活版的Facade。

Name:Facade (生活版)

Context: 一個中大型公司有數千名員工,分別隸屬研發、財務、行銷、業務、行政、銷售等部門。

Problem: 如何讓各個部門落實高階管理階層的命令?

Force:

  • 董事長、副董事長、執行長、營運長、財務長、研發長等高階主管都可能對不同部門下達指令。你不希望部門內部的人員調動或是組織調整導致高階主管也要跟著調整他們的領導方式。
  • 如果高階主管直接對部門內部的每一位員工下達命令,他就被迫要認識每一個人,而且需要知道部門內部的組織與管理細節。如果高階主管異動,新任人選將花費許多時間在了解部門內部細節而非思考經營管理策略。最後可能導致新任人選把任務交給不合適的人,或是拒絕依靠現有組織與人員來執行命令,而從外面找來自己的班底取代原有的人員。

Solution: 設置部門副總,負責將高階主管的命令轉達給部門內部的人員執行,讓高層主管可以更方便的交代任務,並隔離他們對部門內部組織、人員與工作執行細節的相依性。

***

友藏內心獨白:突然想到看門狗。

沒有留言:

張貼留言