在Spring中,我有一個控制器,一個提供此控制器可以訪問的方法的服務接口。控制器調用服務的各種實現方法。將Spring抽象工廠模式轉換爲Scala
爲了讓scala獲得相同的'設計分離',這是正確的實現: 定義scala控制器,定義一個scala特徵作爲服務接口。定義一個擴展此特徵並提供服務實現的新類。然後控制器將安裝這個新類並調用服務方法的各種方法實現。
這是好的設計還是Spring MVC在實踐中的使用方式?
在Spring中,我有一個控制器,一個提供此控制器可以訪問的方法的服務接口。控制器調用服務的各種實現方法。將Spring抽象工廠模式轉換爲Scala
爲了讓scala獲得相同的'設計分離',這是正確的實現: 定義scala控制器,定義一個scala特徵作爲服務接口。定義一個擴展此特徵並提供服務實現的新類。然後控制器將安裝這個新類並調用服務方法的各種方法實現。
這是好的設計還是Spring MVC在實踐中的使用方式?
正如其他人已經評論說,「好設計」是依賴於其他因素,靈活的概念。我不會加入那個討論,而是提供我們的方法的概述。
我們從傳統的Java & Spring webapp開始,儘管我們選擇了Jersey而不是Spring MVC。後來,我們在斯卡拉重新編寫了一個很好的文章。我們故意保留了類似Java的風格的Scala--這可能被認爲是不起眼的,但它運行良好,很容易培養新的同事。
然後我們決定放棄Spring以及它的XML和傳遞依賴的整個shebang。這很容易,因爲我們已經有一組服務和控制器,都是具有構造器注入依賴關係的類(當然是所有的TDD)。我們所要做的只是編寫一個新的Bootstrap類來實例化服務和控制器,並在每個構造函數參數列表中提供必要的具體類。方便起見,Bootstrap類本質上是將原始Spring線路轉換爲(非常簡單)Scala的音譯。 Bootstrap類在應用程序啓動時從web.xml啓動。(這種方法將是熟悉的人誰使用微微集裝箱。)
在我們的例子中,我們並不需要用太多的性狀在我們的服務層;由TDD驅動的混凝土類的清潔設計就足夠了。但是,如果有必要,我們的方法也可以用於可插拔抽象服務。
現在我們有不同的web.xml中沒有XML web應用程序,純粹斯卡拉所以很容易瀏覽和修改,並用少得多的外部依賴。這對我們非常有效。
「好設計」是相當主觀的,「好設計」的含義隨着時間的推移而變化。大多數人認爲最佳實踐有幾件事,但即使是最佳實踐也有衝突。我個人的觀點是,程序員應該繼續學習這些最佳實踐,更重要的是不斷塑造他的代碼,直到達到最佳狀態。然而,這一點,隨着程序員不斷學習,「最佳」形狀不斷變化。
我不能告訴你什麼「好設計」設計在你的情況下,因爲我不知道這種情況。最重要的是,我不是你,所以我的「好設計」不是最適合你的。我建議你在下面幾個問題的幫助下自己找到它:
是的,我同意你的看法,也有跟着出去例如Spring MVC一定的標準,但由於斯卡拉似乎讓一些Java設計模式冗餘(訪問者模式涌現在腦海裏)有可能實現MVC的替代/清潔方法在斯卡拉 – 2013-02-24 11:58:23
如果你想看看別人是怎麼做的Scala的網絡相關的東西,你可以檢查出不同的web框架:[什麼Scala的網絡框架可用(http://stackoverflow.com/questions/1488412/what-斯卡拉,網絡架構,是可用) – EECOLOR 2013-02-24 12:18:49