Php 如何使用DRY principal组织和使用几个在Laravel框架中可以互换的类?

Php 如何使用DRY principal组织和使用几个在Laravel框架中可以互换的类?,php,laravel,repository,dry,Php,Laravel,Repository,Dry,很抱歉标题含糊不清。假设我提供了一项服务,当与新博客文章相关的事情发生时,需要向用户发送通知。他们可以有三种选择:短信、自动语音通话或电子邮件。当他们发表新文章时,MySQL行将指示他们选择了三种类型中的哪一种 每个选项都需要触发不同的事件。例如,对于电子邮件,我需要使用一个连接到Mailchimp API的EmailRepository,在发布、编辑或评论他们的文章时发送电子邮件。如果是短信,我需要使用一个SmsRepository,当同样的事件发生时,它会使用Twilio,语音通话也是这样。

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

每个选项都需要触发不同的事件。例如,对于电子邮件,我需要使用一个连接到Mailchimp API的
EmailRepository
,在发布、编辑或评论他们的文章时发送电子邮件。如果是短信,我需要使用一个
SmsRepository
,当同样的事件发生时,它会使用Twilio,语音通话也是这样。因此,控制这些设备的控制器需要选择正确的路径


我不确定如何实现这一点:我应该为每个存储库重用什么(因为许多函数可以是相同的,如send(),但每个API的工作方式截然不同),我是否应该为它们使用单个接口,根据所选的通知类型等,在注入不同依赖项时是否使用单个类。是否存在关于如何设置类似内容的示例?

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

就个人而言,我创建了一个类来处理通知调用,然后将控制器中的('notification-content','methodofdelivery')传递给通知类,该类应该实现一个策略模式,将内容封装到通知通道中