Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该在域包中放入哪些类?_Java_Oop_Package_Project Organization - Fatal编程技术网

Java 我应该在域包中放入哪些类?

Java 我应该在域包中放入哪些类?,java,oop,package,project-organization,Java,Oop,Package,Project Organization,当我们开始开发应用程序时,我们使用包来逻辑组织我们的类,并且几乎总是有一个名为domain的包(比如com.raysis.reportgen.domain)。我的问题是我们应该在这个包裹里放什么,不应该放什么?有没有一个标准的定义,或者仅仅是关于程序员的品味 早些时候我在这里读到了一些关于它的内容:敏捷大师罗伯特·C·马丁在他的开创性著作《敏捷软件开发:原则、模式和实践》中定义了几个。人们一直在争论像传入和传出耦合这样的度量在实践中有多有用,这些度量应该在哪里以及如何应用,等等。不管你站在争论的

当我们开始开发应用程序时,我们使用包来逻辑组织我们的类,并且几乎总是有一个名为domain的包(比如
com.raysis.reportgen.domain
)。我的问题是我们应该在这个包裹里放什么,不应该放什么?有没有一个标准的定义,或者仅仅是关于程序员的品味


早些时候我在这里读到了一些关于它的内容:

敏捷大师罗伯特·C·马丁在他的开创性著作《敏捷软件开发:原则、模式和实践》中定义了几个。人们一直在争论像传入和传出耦合这样的度量在实践中有多有用,这些度量应该在哪里以及如何应用,等等。不管你站在争论的什么位置,这些度量确实提供了一种很好的客观、可量化的方法来度量耦合。然后,您可以根据自己的意愿使用这些信息

一般来说,您应该更多地关注包级别,而不是类级别。如果某个包发生了很大变化,请限制其成员依赖于此包的包的数量。相反,如果一个包是稳定的,鼓励其他包依赖它。另一条经验法则是,当更改包中一个类的API意味着必须更改包中所有其他类的API时,您知道包具有良好的内聚性


您还可以将这些原则视为Martin支持的一些OO类原则的包级版本,如。

我鼓励只在域包中放置与域模型相关的类,如
Customer
Order
,等等

这些特定于域的实体类将在持久层中用于映射域实体和数据库表,这些实体还将用于持久化数据库表中的实体实例


在基于模块的应用程序开发中,这个
域包
您将永远不会暴露于外部世界

您应该将构成域模型的类放入域模型中。为了找出哪些属于域模型,哪些不属于域模型,让我们从定义开始。维基百科

因此,您应该在代码中放置表示上述概念的类。 代码中还有其他类不是域模型的一部分。其中一些:

  • 促进数据库访问的类-属于DAO层
  • 负责向用户呈现数据的类-属于呈现类

  • 包组织基本上总是开发人员的选择。另外,关于如何安排包结构没有严格的标准

    显然,有一些最佳实践,您应该在项目中遵循,以维护类并定义它们的“关注点”


    通常,
    domain
    子包主要用于在围绕MVC模式实现的项目中放置域对象(或模型对象),但不仅仅是。模型对象可以映射数据库中的表(如果您使用的是ORM),或者它们只是表示应用程序逻辑中涉及的实体的类

    期待那本书在手。这是必读的。说真的。你知道,我想每个人都有一些乍一看似乎不重要的小问题,但深入研究这些概念会让一些专家变得如此专业。另外,如果这个答案对您有所帮助,请您进行升级投票或接受。我已经对其进行了升级投票。有一种说法是,任何需要持久化的pojo也是域对象。
    Domain model describes the various entities, their attributes, roles,
    and relationships, plus the constraints that govern the problem domain