Luc*_*uke 9 java domain-driven-design naming-conventions java-ee
如何命名存储库和服务接口及其实现类?
例如,我有一个名字的模型Question.您将命名存储库(接口和实现)和服务(接口/实现).
阅读这些帖子后: Java接口/实现命名约定 和Java中的接口命名我重新考虑了我已经做过的事情:)
Dmi*_*try 10
我认为在DDD中命名大致有两种方法:
1)基于刻板印象.这是您在其名称中包含类构造型的位置.例如:
QuestionsRepository, TaxCalculatingService etc
Run Code Online (Sandbox Code Playgroud)
2)基于域.在这种方法中,您只使用域语言,并省略类名中的任何构造型.例如:
Questions (or AllQuestions), TaxCalculator etc.
Run Code Online (Sandbox Code Playgroud)
实现类将命名为SqlQuestions或InMemoryQuestions.
我尝试了两种,但我现在更喜欢第二种选择,因为它似乎更符合DDD思维模式.它似乎更具可读性,并具有更好的信噪比.以下是PhilCalçado 撰写的关于存储库的精彩文章的引用:
存储库作为对象列表的概念并不难理解,但这些类最终会使用与列表无关的方法.
在指导许多团队采用无所不在的语言和相关模式之后,我发现让人们记住存储库不是类似DAO的类的最佳方式始于你如何命名它们.
几年前Rodrigo Yoshima在命名存储库时告诉我他的约定.而不是下面显示的更常见的命名样式:
class OrderRepository {
List<Order> getOrdersFor(Account a){...}
}
Run Code Online (Sandbox Code Playgroud)
他提倡这个:
class AllOrders {
List<Order> belongingTo(Account a){...}
}
Run Code Online (Sandbox Code Playgroud)
它看起来像一个小小的变化,但它有很大的帮助......
整篇文章非常值得阅读和书签.
| 归档时间: |
|
| 查看次数: |
5610 次 |
| 最近记录: |