gpt4 book ai didi

c# - 静态东西的松散耦合

转载 作者:行者123 更新时间:2023-11-30 13:21:01 25 4
gpt4 key购买 nike

我有一个类,ClassA,它使用我编写的客户端发送文本消息,TextClient,通过调用静态方法发送一些文本消息

TextClient.Send(string text, string destination)
// where destination is a phone number

但是,我还有一个邮件客户端类 MailClient,它发送具有相同签名的电子邮件:

MailClient.Send(string text, string destination)
// where destination is an email address

我想“注入(inject)”应该使用这些客户端中的哪些 - 这可能吗?

(注意:我知道当对于 destination 可以保存哪些值并被视为有效的值有完全不同的规则时可能会出现问题,但是这些值是从其他地方获取的,所以这个类不需要打扰。这就是为什么我想首先将其抽象掉。)

最佳答案

基本上,摆脱静态方法。创建一个接口(interface) (IMessageClient),然后使用实现该接口(interface)的实例方法创建两个实现(TextClientMailClient)。然后,您可以轻松地将适当的 IMessageClient 注入(inject)应用程序的其余部分。

您当然可以使用委托(delegate)来避免在此处创建接口(interface) - 但我肯定会改为使用接口(interface):

  • 所涉及的名称(接口(interface)名称、方法名称和参数名称)在您使用它们时传达信息
  • 它允许在同一个接口(interface)中使用多个方法
  • 它防止碰巧具有相同参数类型但含义完全不相关的方法被意外使用

关于c# - 静态东西的松散耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3246718/

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