只是想知道命名和打包惯例:
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类,除了“model”类型的Swing类。它们看起来与JPane有点不同,所以我将MessagesDefaultListModel
放入控制器包中,因为它本身并不是一个真正的模型,至少在我看来,因为它从“模型”包中获取数据。因此,即使MessagesDefaultListModel
是JList的模型,我也将其视为控制器。
Newsgroups
,Articles
和NewsgroupsArticles
是@Entity类,因此我将它们放入模型包中。这些实体与表newsgroups
,articles
和newsgroups_articles
对应。
这是一个理智的包装和命名吗?
答案 0 :(得分:2)
我通常更喜欢进行第一次功能级隔离,然后在功能域内进行第二次技术隔离。
我会将model
包domain
命名为。在控制器包中创建名为model的类感觉很奇怪。这些是摇摆MVC架构中的模型,而不是控制器。
另外,我讨厌在root包中放任何东西。为什么不将属性文件放在一个包中,就像负责解析和保存属性的类一样?
您的实体应具有单数名称,而不是复数名称。这可能是我看到的最重要的重构:Articles
的一个实例是一篇文章,因此该类应命名为Article
,而不是Articles
。
最后,我看到实体,我看到与演示相关的类,但我没有看到任何服务和数据访问层。不应在表示层中进行数据访问。这不是它的责任。而且你需要一个划分交易的地方(最好是以声明的方式):那应该是服务层。像Spring这样的依赖注入框架在这里非常有用,并使代码易于测试。