小编Kor*_*üpe的帖子

存储库是否应具有更新/保存/删除方法?

我想为我的项目实现存储库设计模式,但不清楚是否在存储库中使用CRUD操作。一些资源说您不应该使用update / save / delete方法,因为存储库仅用于将对象保存在内存中,而您应该为其他操作提供服务。

哪一种是最好的方法?

谢谢。

crud repository repository-pattern

6
推荐指数
1
解决办法
1308
查看次数

在 Laravel 中使用第 3 方 API 和创建域时使用适配器模式

在我的 Laravel REST API 项目中,我主要使用第 3 方 API。为此,我有一个按 API(住宿、规划、折扣等)分组的“服务”文件夹,用于向 API 发送正确的参数并获取原始数据。

我觉得我需要在这里使用适配器模式,因为这个第三方输出需要格式化。

让我尝试举一个例子。

我有一个 EventDao 接口(数据访问对象)和一个或多个具体的 EventDao 类,例如 EventbriteDao。

我还为每个具体 DAO 提供了一个适配器。例如:EvenbriteAdapter

我将在某个地方有一些业务逻辑,所以我需要一个事件实体类。要将适配器的数据传递给实体,我需要一个 EventDTO 类(数据传输对象

最后我可以调用 eventDao (通过接口感谢 Laravel 的服务提供商)

我将其原始输出传递给适配器,然后将适配器的输出传递给实体。然后我可以调用实体类的方法之一。(之后我需要将其转换为正确的 json 数据,但这是简单的部分。)

我不知道在哪里放置其他 CRUD 逻辑,如updateEvent、deleteEvent、getAll等。我应该直接在控制器中调用它们还是创建存储库(存储库模式)?我对此很困惑。

这是一个好的方法还是过度设计?因为除了控制器之外我还有 5-6 个类/接口。

另一个问题是直接在控制器中调用EventbriteAdapter。我应该有一个接口吗?在这种情况下,我需要将服务和适配器接口绑定到 AppServiceProvider 中的实现。

我的另一个担忧是实体块的集合。如果我调用 getAll() 方法,我可以循环数据并创建一个对象数组,但我对此感到不舒服。Laravel 的集合很有用,但我想将应用程序层与域分开。有什么好的解决方案吗?

我提到的一些文件的示例代码是:

interface EventAdapter
{
    public function getId();
    public function getName();
    public function getStartDate();
    public function getLocationName();
}



class …
Run Code Online (Sandbox Code Playgroud)

architecture design-patterns repository adapter laravel

5
推荐指数
1
解决办法
7164
查看次数