2010-05-28 99 views
21

我一直在使用PHP進行很多工作。 但是最近我被派上了一個使用Java的工作。在PHP中,我曾經做過很多Singleton對象,但是這種模式在Java中並不具有與PHP相同的含義。 所以我想去一個實用程序類(一個靜態方法的類),但我的負責人不喜歡這種類,並要求我去服務對象。 所以我的猜測是一個服務對象只是一個具有構造函數的類來實現一些公共方法... 我是對的嗎?服務對象的定義是什麼?

回答

19

Domain-Driven Design限定服務爲:

服務是作爲單獨矗立在模型的接口提供了一個操作,而不包封狀態... [P。 105]

是的,它是一個具有公共方法的類,但除此之外,它還實現了公開這些方法的接口。在其核心,服務是接口 - 實現它的類只是一個實現細節。

+0

因此,如果我得到它的權利,對於我轉變爲服務的每個工具類,我應該創建一個接口? – MaxouMask 2010-05-28 11:38:40

+1

是的,但是在OO中,Utility類的整個概念是一種代碼異味。真正的OO班有明確的職責...... – 2010-05-28 12:02:53

+0

好的非常感謝:) – MaxouMask 2010-05-28 12:05:22

2

我發現服務對象的另一個定義,而不是描述爲具體類的接口,這些具體類即將通過該接口設置的API定義提供某種服務。

文章關於微服務>Link定義爲服務對象:

3:許多面向對象的設計,包括我們自己,使用術語服務對象的領域驅動設計感的對象的指令進行一個與實體無關的重要過程。這與我們在本文中使用「服務」的方式不同。可悲的是,術語服務具有雙重含義,我們必須與多義詞共存。

我在這裏理解的不是技術方面,比如將其定義爲「界面」,而是更多地描述了它的設計概念。我也理解一個service object只是一個類的責任域。因此,如果您正在開發Web應用程序,則可能有一個服務對象SecurityService,它是SecurityController的組件。控制器正在調用服務以實際處理安全(域)特定的服務。