适配器模式

示例展示了如何使用适配器模式将外部邮件服务的SendEmail接口转换为内部系统所需的SendMail接口,以便在不修改内部代码的情况下调用外部服务。通过这种适配,降低了系统的耦合度,提高了可扩展性和维护性。
摘要由CSDN通过智能技术生成
type MailSender interface {
    SendMail(to string, subject string, body string) error
}

然后定义外部邮件服务的接口:

type ExternalMailSender interface {
    SendEmail(address string, subject string, body string) error
}

创建一个适配器类型,实现 MailSender 接口:

type ExternalMailSenderAdapter struct {
    externalMailSender ExternalMailSender
}

func (a ExternalMailSenderAdapter) SendMail(to string, subject string, body string) error {
    return a.externalMailSender.SendEmail(to, subject, body)
}

这个适配器类型将外部邮件服务的接口适配成了内部系统需要的接口,通过调用外部邮件服务的 SendEmail 方法来实现 SendMail 方法。

现在,内部系统就可以使用 ExternalMailSenderAdapter 类型来发送邮件,而不需要关心外部邮件服务的具体实现。

func sendEmail(ms MailSender) {
    err := ms.SendMail("user@example.com", "Test email", "This is a test email.")
    if err != nil {
        log.Println("Error sending email:", err)
    }
}

func main() {
    // 创建外部邮件服务的实例
    externalMailSender := NewExternalMailSender()

    // 将外部邮件服务的接口适配成内部系统需要的接口
    mailSender := ExternalMailSenderAdapter{
        externalMailSender: externalMailSender,
    }

    // 发送邮件
    sendEmail(mailSender)
}

在这个示例中,适配器模式被用来将一个外部服务的接口适配成内部系统的接口。通过这种方式,内部系统就可以使用适配后的接口来调用外部服务,而不需要修改内部系统的代码。适配器模式可以让系统更加灵活,降低耦合度,使系统更容易扩展和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值