2010-05-28 75 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的组件。控制器正在调用服务以实际处理安全(域)特定的服务。