我什么时候打电话给班级管理员,经理或服务员?

Mar*_*inL 47 java architecture model-view-controller naming-conventions

也许这对你来说很明显.我是java的新手(半年工作),我与同事讨论过.根据他们的职责,我很难找到我的课程.为此,我的班级获得了他们不应该承担的责任.

你能帮助我吗?

顺便说一句:我正在一个项目中工作,我必须使用服务类的持久层.我已经将我的包拆分为模型,服务和持久性.

Daf*_*aff 53

这些术语背后有某些模式和指导方针,这是我通常的基础:

控制器基于模型 - 视图 - 控制器设计模式,应明确用于基于此设计模式实现控制器功能的类.例如,如果您正在使用Spring MVC并从一个Controller类扩展.

服务稍微不那么具体,但我建议将实现基于"模式的企业应用程序架构 " 的服务层模式.基本上,控制器更具有平台特定性(例如,通过HTTP传输和渲染超文本,通常是基于Web的控制器的HTML),服务不应该知道谁在使用它以及如何使用它.您只是提供一个统一的界面,可以通过Web控制器依次使用.

经理们 ......管理好东西.连接,应用程序上下文,会话; 通常作为整个应用程序中的组件可以与之交谈的中心位置.


Laf*_*ica 14

要添加已经给出的好答案,如果您发现您很难找到适合您的课程的名称,那么您可能应该调查您的课程是否有多个职责.如果是这种情况,那么您肯定应该重构代码以将职责分离到单独的类中.


mpr*_*hat 12

有关命名惯例,请阅读官方惯例.

经理 - 正如名称建议管理代码中的东西,如EntityManager,它管理实体,TransactionManager - 它管理交易.因此,您可以使用称为SecurityManager的东西来管理哪些Algo用于加密等

控制器 - 名称再说一遍,控制需要做什么,或者如何完成工作.例如,ActionController - 负责接收用户操作事件时要做的事情

服务 - 考虑像postalService这样的事情,一个人在一般情况下执行的任务,你可以利用它.

打包代码需要经过深思熟虑,您的应用程序打包应始终与其所适用的业务模型保持一致.

除了商业模型,您还需要考虑该功能是否是应用程序的核心,因此您将把它移动到核心,比如该功能是否要与其他应用程序通信,您希望在集成下移动它等等.

  • 对于约定,应该提到的是,坚持您的业务约定而不是 Sun 的约定更好。Sun 的指导方针当然是一个很好的起点,但最终,你的同事会维护你的代码(你最终会维护他们的代码),所以你应该遵循你公司的约定(如果你有这样的约定)。 (2认同)
  • 该约定与OP的要求无关。 (2认同)