如何使用DRY主体来组织和使用Laravel框架中可互换的几个类



很抱歉标题含糊不清。比方说,我提供了一项服务,当发生与新博客文章相关的事情时,需要向用户发送通知。他们可以有三种选择:短信、自动语音通话或电子邮件。当他们发布新的帖子时,MySQL行将指示他们选择了三种类型中的哪一种。

每个选项都需要触发不同的事件。例如,对于电子邮件,当他们的帖子被发布、编辑或评论时,我需要使用连接到Mailchimp API的EmailRepository来发送电子邮件。如果是SMS,当同样的事件发生时,我将需要使用使用Twilio的SmsRepository,语音呼叫也需要使用同样的想法。因此,执行这些操作的控制器需要选择正确的路径。

我不确定如何实现这一点:我应该为每个存储库重用什么(因为许多函数可以是相同的,比如send(),但每个API的工作方式完全不同),我是否应该为所有这些函数使用一个接口,是否根据所选的通知类型在注入不同依赖项时使用一个类,等等。有没有关于如何设置这样的东西的例子?

听起来像是策略模式的工作:

就我个人而言,我创建了一个类来处理通知调用,然后将("通知内容"、"传递方法")从控制器传递到通知类,该类应该实现一个将内容封装到通知通道的策略模式。

最新更新