我发现自己经常实现一个类,作为我的业务实体的美化容器。通常我只是用“模型”作为该类的后缀,这非常具有描述性和广泛性。
一个例子(python):
class MyBusinessEntity:
pass
class MyBusinessEntityModel:
def __init__(self):
self.entities = []
def create_entity(self):
self.entities.append(MyBusinessEntity())
# Implement the rest of the CRUD operations
此类将充当我的主数据存储库,并且很可能使用某种数据访问对象进行持久存储。
这类课程有名字吗?我遇到了Repository Pattern,但我不知道这是不是我要找的东西。
答案 0 :(得分:1)
您是对的,这基本上是Repository Pattern的内存实现。通常,应用程序服务(实现您的用例)将使用它来检索业务对象和与他们做点什么。
存储库的两个主要版本是集合样式存储库和命令样式存储库。前者尝试尽可能接近地模拟内存中的集合,而后者具有基于命令的接口。主要区别在于更新:命令样式存储库具有明确的update
方法。
让我们坚持使用此示例的命令样式存储库。通过这样的示例,读用例通常看起来像这样(伪代码):
books = bookRepository.findByAuthor(theAuthor)
ui.show(books)
创建调用可能看起来像
book = new Book(author, isbn, ...)
bookRepository.create(book)
更新通话看起来像
book = bookRepository.getById(bookId)
book.Author = newAuthor
bookRepository.update(book)
您的代码示例有点奇怪的是您的存储库自己实例化业务对象。 这不是存储库的责任。
相反,应用程序服务会创建一个,并在create
调用中将其传递给存储库。因此,存储库上的create
通常并不意味着“创建业务对象”,而是“将此对象添加到数据存储”。如果是内存存储库,这只是意味着将对象添加到内部集合中。