依赖注入

当我们实现一个类时,有时候需要在类的构造函数中注入其它类的实例作为依赖。使用依赖注入可以使得代码更加灵活、可测试和可维护。

下面是一个简单的基于 Python 的依赖注入示例:

class EmailSender:
    def send_email(self, to_addr: str, subject: str, body: str):
        print(f"Sending email to {to_addr}\nSubject: {subject}\nBody: {body}")


class NewsletterManager:
    def __init__(self, email_sender: EmailSender):
        self.email_sender = email_sender

    def send_newsletter(self, recipients: List[str], subject: str, body: str):
        for recipient in recipients:
            self.email_sender.send_email(recipient, subject, body)


if __name__ == '__main__':
    email_sender = EmailSender()
    newsletter_manager = NewsletterManager(email_sender)
    recipients = ['alice@example.com', 'bob@example.com']
    newsletter_manager.send_newsletter(recipients, 'Newsletter', 'Hello from our company!')
在这个示例中,NewsletterManager 类依赖于 EmailSender 类,因为它需要在发送新闻通讯时调用 EmailSender.send_email() 方法。
在 NewsletterManager 的构造函数中,我们注入了一个 EmailSender 实例,并将其存储为 self.email_sender 属性。
然后,我们可以使用 NewsletterManager 的 send_newsletter() 方法向给定的收件人列表发送邮件。

在主程序中,首先创建一个 EmailSender 实例,然后将其传递给 NewsletterManager 构造函数创建一个 NewsletterManager 实例。
最后,我们调用 NewsletterManager 的 send_newsletter() 方法来发送新闻通讯邮件。
posted @ 2023-04-07 20:37  我在路上回头看  阅读(51)  评论(0编辑  收藏  举报