2013-02-24 48 views
0

在Spring中,我有一個控制器,一個提供此控制器可以訪問的方法的服務接口。控制器調用服務的各種實現方法。將Spring抽象工廠模式轉換爲Scala

爲了讓scala獲得相同的'設計分離',這是正確的實現: 定義scala控制器,定義一個scala特徵作爲服務接口。定義一個擴展此特徵並提供服務實現的新類。然後控制器將安裝這個新類並調用服務方法的各種方法實現。

這是好的設計還是Spring MVC在實踐中的使用方式?

回答

0

正如其他人已經評論說,「好設計」是依賴於其他因素,靈活的概念。我不會加入那個討論,而是提供我們的方法的概述。

我們從傳統的Java & Spring webapp開始,儘管我們選擇了Jersey而不是Spring MVC。後來,我們在斯卡拉重新編寫了一個很好的文章。我們故意保留了類似Java的風格的Scala--這可能被認爲是不起眼的,但它運行良好,很容易培養新的同事。

然後我們決定放棄Spring以及它的XML和傳遞依賴的整個shebang。這很容易,因爲我們已經有一組服務和控制器,都是具有構造器注入依賴關係的類(當然是所有的TDD)。我們所要做的只是編寫一個新的Bootstrap類來實例化服務和控制器,並在每個構造函數參數列表中提供必要的具體類。方便起見,Bootstrap類本質上是將原始Spring線路轉換爲(非常簡單)Scala的音譯。 Bootstrap類在應用程序啓動時從web.xml啓動。(這種方法將是熟悉的人誰使用微微集裝箱。)

在我們的例子中,我們並不需要用太多的性狀在我們的服務層;由TDD驅動的混凝土類的清潔設計就足夠了。但是,如果有必要,我們的方法也可以用於可插拔抽象服務。

現在我們有不同的web.xml中沒有XML web應用程序,純粹斯卡拉所以很容易瀏覽和修改,並用少得多的外部依賴。這對我們非常有效。

0

「好設計」是相當主觀的,「好設計」的含義隨着時間的推移而變化。大多數人認爲最佳實踐有幾件事,但即使是最佳實踐也有衝突。我個人的觀點是,程序員應該繼續學習這些最佳實踐,更重要的是不斷塑造他的代碼,直到達到最佳狀態。然而,這一點,隨着程序員不斷學習,「最佳」形狀不斷變化。

我不能告訴你什麼「好設計」設計在你的情況下,因爲我不知道這種情況。最重要的是,我不是你,所以我的「好設計」不是最適合你的。我建議你在下面幾個問題的幫助下自己找到它:

  • 你是誰編程?
  • 你的代碼需要多長時間?
  • 誰會維護你的代碼?
  • 你想創建自動測試,你是否願意改變你的設計?
  • 您是否需要單個原則的多個實現?
  • 在這個時候什麼風格適合你?
  • 代碼多久改變一次?
  • 您是否想將未來考慮進去,還是隻創建現在需要的?
  • 你喜歡用什麼庫?
  • 你想花多少時間?
+0

是的,我同意你的看法,也有跟着出去例如Spring MVC一定的標準,但由於斯卡拉似乎讓一些Java設計模式冗餘(訪問者模式涌現在腦海裏)有可能實現MVC的替代/清潔方法在斯卡拉 – 2013-02-24 11:58:23

+1

如果你想看看別人是怎麼做的Scala的網絡相關的東西,你可以檢查出不同的web框架:[什麼Scala的網絡框架可用(http://stackoverflow.com/questions/1488412/what-斯卡拉,網絡架構,是可用) – EECOLOR 2013-02-24 12:18:49