我很困惑,我在寻找构建我的项目的最佳实践,我的意思是将Java代码组织到包中的最佳方法。另外,我读到了一些关于建筑风格和架构模式的文章,有些页面说它们是相同的,而另一些页面则说它们是不同的,所以我对此表示怀疑,首先,建筑风格和建筑模式是相同的吗?然后,当您讨论将java代码组织到包中时,与您说:“我正在为我的java项目寻找最好的架构patten”时是一样的。我真的需要理解这一点,我一直在阅读和阅读,但我仍然不明白。最后,如果你听不懂我在这里发的文章,我的英语很差,我需要多练习。
发布于 2018-05-02 17:25:29
建筑风格:
建筑风格以非常宽泛的笔触告诉我们如何组织代码。它是最高级别的粒度,它指定了应用程序的层、高级模块以及这些模块和层之间的交互方式,以及它们之间的关系。建筑风格的例子: 基于组件的单片应用程序分层管道和过滤器事件驱动发布订阅插件面向客户端服务器服务
建筑模式:
模式是对反复出现的问题的反复解决方案。就建筑样式而言,它们解决了与建筑风格有关的问题。例如,“我们将拥有哪些类,它们将如何交互,以便实现一个具有特定层集的系统”,或者“我们面向服务的体系结构中将有哪些高级模块以及它们将如何通信”,或者“我们的客户机-服务器体系结构将有多少层”。 体系结构模式对代码基础有广泛的影响,最常见的是横向影响整个应用程序(即。如何在一层中构造代码)或垂直(即。如何将请求从外部层处理到内部层和回层)。建筑模式的例子: 三层微核模型-视图-控制器模型-视图-视图模型
对我来说,这与类级别的接口和实现具有类似的二分法。
换句话说,风格是目标,模式是实现目标的方式。
Java包有两个与此相关的目的。它们习惯于组织您的代码,并通过使用公共和包私有的方法在库级别提供封装。
如果您使用客户机-服务器样式,那么您将需要一个用于服务器的包和一个可以独立使用的客户端包。服务器和客户端可能会共享您希望放在它们之间共享的包中的公共POJO。
如果您使用的是插件样式,那么您将需要一个用于通用接口和加载程序的包,但是任何实现都将在它们自己的包中。与SLF4J及其实现进行比较。插件加载包和每个插件实现都需要共享一个包含插件接口的小包。
现在,如果您选择一种服务风格,那么您可能只有一个顶级包用于您的整个服务,但是您可以选择根据不同的域组织子包,例如可以在不考虑IO的情况下对核心逻辑进行单元测试的包和处理与IO交互的包。换句话说,核心接口只是关注对象和方法,但是IO包处理解析请求和打印响应。
https://stackoverflow.com/questions/50139928
复制相似问题