gpt4 book ai didi

design-patterns - 这是装饰者模式吗?

转载 作者:行者123 更新时间:2023-12-01 12:01:58 24 4
gpt4 key购买 nike

我正在使用内置系统类在 .NET 中发送电子邮件。它位于 System.Mail 命名空间或类似名称中。

我需要向此类添加一个接口(interface),以便我可以将其换出以进行测试或其他实现。

为此,我只是定义一个包装这个内置类的类?

这是装饰器模式的一个例子吗?我只是有点困惑,因为装饰器模式的描述通常声明它用于添加功能,而我不会添加任何内容。

最佳答案

嗯,这听起来就像封装(包装类)和抽象(接口(interface))。

但是,一旦您拥有接口(interface),您就可以使用装饰器模式。

严格来说,在装饰器的使用中,每一层都有相同的接口(interface);装饰本质上是不同具体类的菊花链,(在实现接口(interface)时)将方法传递给链中的下一个链接,或者做一些定制的事情。

(更新:我不是说你应该这样做 - 这只是装饰器模式如何工作的一个例子,在原始电子邮件问题)

例如,您可能有一个接口(interface) IEmail、一个基本实现 BasicEmail(使用内置 .NET 代码)、一个 LoggingEmail 接受一个 IEmail,并且只是传递东西(但在你走的时候记录东西),一个 ForwardingEmail 接受一个 IEmail 和更改 To 等(可能用于开发/测试/实时目的)。

那么你可以:

`ForwardingEmail` => `LoggingEmail` => `BasicEmail` => (regular .NET classes)

(前三个只被称为IEmail)

这允许您在不更改 API 的情况下扩展功能。在工厂/IoC 设置中非常常见,在 AOP 中更是如此。

关于design-patterns - 这是装饰者模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/412319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com