包含业务实体的容器是否有名称/模式?

2024-04-20 09:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现自己经常实现一个类,作为我的业务实体的光荣容器。通常我只是用“model”作为那个类的后缀,这是非常不描述性和宽泛的。你知道吗

例如(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,但我不知道这是否真的是我要找的东西。你知道吗


Tags: the数据self实体modeldefpass业务
1条回答
网友
1楼 · 发布于 2024-04-20 09:36:18

没错,这基本上是Repository Pattern的内存实现。通常,应用程序服务(在实现用例的地方)会使用它来检索业务对象并对其进行处理。你知道吗

存储库类型

存储库的两种主要风格是集合式存储库和命令式存储库。前者试图尽可能地模拟内存中的集合,而后者有一个基于命令的接口。主要区别在于更新:命令风格的存储库有一个显式的update方法。你知道吗

用法

让我们继续使用这个示例的命令样式存储库。在这样的示例中,读取用例通常如下所示(伪代码):

books = bookRepository.findByAuthor(theAuthor)
ui.show(books)

create调用可能看起来像

book = new Book(author, isbn, ...)
bookRepository.create(book)

更新电话可能看起来像

book = bookRepository.getById(bookId)
book.Author = newAuthor
bookRepository.update(book)

关于您的实施的说明

代码示例有点奇怪的一点是,存储库本身实例化了业务对象。这不是存储库的责任。

相反,应用程序服务将创建一个,并通过create调用将其传递给存储库。因此,存储库上的create通常并不意味着“创建业务对象”,而是“将此对象添加到数据存储中”。对于内存中的存储库,这只意味着将对象添加到内部集合中。你知道吗

相关问题 更多 >