我認爲服務/應用層與Larman描述的GRASP控制器是一樣的,它是超越GUI層的第一個委託給域層的對象,應該可以從不同的層次重用GUI。服務層=應用層= GRASP控制層
服務(埃文斯)層是一樣的應用程序(福勒)層,因爲福勒本人是這麼說的,他在「bliki」關於「貧血域模型」:http://martinfowler.com/bliki/AnemicDomainModel.html
報價: 「應用層[他命名爲服務層]:定義 軟件應該做的工作並指導表現域對象 摸出問題的任務,這層負責的 業務意義的或必要與 應用層的交互。的其他系統,該層保持精簡,它不包含業務規則或知識,但不包含 ,但僅協調任務 ,並將工作委託給下一個 下層的域對象的協作。它沒有狀態反映經營狀況, 但它可以有反映任務爲 用戶或程序的進展狀態。」
現在考慮上面的描述(也見捕鳥的PEAA書,關於從用例中識別服務層方法),並考慮福勒描述的服務層中的圖片,該層描述服務層是在該URL的「用戶界面」之後的第一層:http://martinfowler.com/eaaCatalog/serviceLayer.html
現在比較上述服務/應用層描述 與Larman關於GRASP控制器的一些詞彙(第3版 版本的hi (「UML and patterns」),年齡 302-306): 「...超出UI層的第一個對象,它接收和協調 (」控件「)系統操作...」 「 ...表示系統事件 發生的用例場景...「 」...通常,控制器應該將需要完成的工作 委託給其他對象;它協調或控制活動。它 並沒有做太多的工作本身......」
我認爲Larman與的把握控制層是一樣的 埃文斯/福勒的應用/服務層。是否有其他人不同意? 然後請解釋之間的差異顯著這些概念,以及控制器類的一些例子,而不是服務/應用程序類。
我的問題是天生的,因爲有人說模型域對象的創建是控制器的責任,而不是其他服務/應用層。但是,你能給我一個服務層類的例子和控制器類之間的區別嗎?
這些類是按照慣例來排列嗎?我有點喜歡在他們的狀態存儲恕我直言,我覺得它更簡單... – Haroon 2011-08-06 08:45:42
@Wanderson桑托斯,伊莫,應該沒有分離的控制器作爲用戶界面和域。在MVC中,沒有這樣的事情。控制器協調(業務)服務完成的邏輯(進而處理/變換/處理(域)模型)和視圖。每個控制器(C)使用(商業)服務來獲得模型(M)並提供該模型(M)的視圖(V)。 M-V-C的分離允許您交換視圖技術,而不是使用Facade模式。 – despot 2014-01-08 12:36:41
當您注意到多個客戶端(客戶端是另一個服務或控制器 - 內部或客戶端是外部系統)使用多個(組)服務時,應使用外觀模式用於服務。 – despot 2014-01-08 12:37:31