也许这对你来说很明显。我是java的新手(半年工作),我与同事讨论过。根据他们的职责,我很难找到我的课程。为此,我的班级获得了他们不应该承担的责任。
你能帮助我吗?
BTW:我正在一个项目中工作,我必须使用服务类的持久层。我已经将我的包拆分为模型,服务和持久性。
答案 0 :(得分:48)
这些术语背后有某些模式和指导方针,这是我通常的基础:
控制器基于Model-View-Controller design模式,应明确用于基于此设计模式实现控制器功能的类。例如。如果您正在使用Spring MVC并且从一个Controller类扩展。
服务稍微不那么具体,但我建议将实施基于Service Layer的"Patterns of Enterprise Application Architecture模式。基本上,控制器更具特定于平台(例如运输)通过HTTP和超文本的渲染,通常是基于Web的控制器的HTML)服务不应该知道谁在使用它以及如何使用它。你只是提供一个统一的界面,可以通过例如web控制器依次使用。 / p>
经理以及......管理内容。连接,应用程序上下文,会话;通常作为整个应用程序中的组件可以与之交谈的中心位置。
答案 1 :(得分:14)
要添加已经给出的好答案,如果您发现自己很难找到合适的课程名称,那么也许您应该调查您的课程是否有多个职责。如果是这种情况,那么您一定要重构代码,将职责分离到不同的类中。
答案 2 :(得分:11)
有关命名惯例,请阅读官方convention。
管理员 - 正如名称建议管理代码中的东西,如EntityManager,它管理实体,TransactionManager - 它管理事务。因此,您可以使用名为SecurityManager的东西管理哪个Algo用于加密e.t.c
控制器 - 名称再说了很多,控制着需要做什么,或者如何做。对于例如ActionController - 负责接收用户操作事件
的操作服务 - 考虑像postalService这样的事情,一个人在一般情况下执行的任务,你可以使用它。
包装代码需要经过深思熟虑,您的应用程序包装应始终与其所适用的业务模型保持一致。
除了商业模式之外,您还需要考虑该功能是否是应用程序的核心,因此您将把它移动到核心,比如该功能是否要与其他应用程序通信,您希望在集成下移动它等等。
答案 3 :(得分:1)
我不知道我是否曾任命过班级经理,所以我会把它留下来。
对我来说控制器是一种控制或决定某事物(信号,信息,...)去哪里的东西。
服务是接口(以及该接口的实现),提供一些功能,通常位于系统或子系统的边界。尽可能隐藏实施细节。