【问题标题】:what would be a better packaging and naming arrangement?什么是更好的包装和命名安排?
【发布时间】:2012-07-29 09:08:00
【问题描述】:

只是想知道以下的命名和包装约定:

thufir@dur:~/NetBeansProjects/USENET$ 
thufir@dur:~/NetBeansProjects/USENET$ tree src/
src/
├── META-INF
│   └── persistence.xml
├── net
│   └── bounceme
│       └── dur
│           └── usenet
│               ├── controller
│               │   ├── CommentsDefaultListModel.java
│               │   ├── GroupDefaultListModel.java
│               │   ├── MessageBean.java
│               │   └── MessagesDefaultListModel.java
│               ├── model
│               │   ├── Articles.java
│               │   ├── NewsgroupsArticles.java
│               │   ├── Newsgroups.java
│               │   ├── PropertiesReader.java
│               │   └── Usenet.java
│               └── swing
│                   ├── Comments.form
│                   ├── Comments.java
│                   ├── Groups.form
│                   ├── Groups.java
│                   ├── MainFrame.form
│                   ├── MainFrame.java
│                   ├── Messages.form
│                   ├── Messages.java
│                   ├── PanelWithTabs.form
│                   └── PanelWithTabs.java
└── usenet.properties

8 directories, 21 files
thufir@dur:~/NetBeansProjects/USENET$ 

在 swing 包中,我放置了 Swing GUI 类,“模型”类型的 Swing 类除外。它们似乎与 JPane 的有点不同,所以我将MessagesDefaultListModel 放入控制器包中,因为它本身并不是真正的模型,至少在我看来,因为它从“模型”包中获取数据。因此,即使MessagesDefaultListModel JList 的模型,我更多地将其视为控制器。

NewsgroupsArticlesNewsgroupsArticles 是@Entity 类,所以我将它们放入模型包中。这些实体对应于表newsgroupsarticlesnewsgroups_articles

这是一个合理的包装和命名吗?

【问题讨论】:

    标签: java model-view-controller design-patterns naming-conventions code-organization


    【解决方案1】:

    我通常更喜欢进行第一次功能级别的隔离,然后在功能域内进行第二次技术隔离。

    我会将model 包命名为domain。在控制器包中有名为 model 的类感觉很奇怪。这些是 Swing MVC 架构中的模型,而不是控制器。

    另外,我讨厌将任何东西放在根包中。为什么不把属性文件放在一个包里,和负责解析和保存属性的类一样呢?

    您的实体应该有一个单数名称,而不是复数名称。这可能是我看到的最重要的重构:Articles 的实例是一篇文章,因此该类应命名为 Article,而不是 Articles

    最后,我看到了实体,我看到了与表示相关的类,但我没有看到任何服务和数据访问层。数据访问不应在表示层进行。那不是它的责任。而且您需要一个划分事务的地方(最好以声明的方式):那应该是服务层。像 Spring 这样的依赖注入框架在这方面有很大帮助,并使代码易于测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2016-12-12
      • 2019-04-06
      • 1970-01-01
      • 2023-04-07
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多