gpt4 book ai didi

c# - 用于创建 API URL 的设计模式

转载 作者:太空狗 更新时间:2023-10-29 20:05:21 25 4
gpt4 key购买 nike

我正在构建一个与各种第 3 方 API 交互的类库。我使用了外观模式来简化对复杂和困惑调用的访问,并使用工厂模式来返回正确的实现。我现在正在尝试构建其中一个实现,但想不出一个优雅的设计。

我正在构建的实现需要构建一个 URL(我正在通过 URIBuilder 进行构建)。然后我需要“执行”该网址。然后我将 Xml 结果反序列化为一个类。

我计划使用 HttpClient 通过我构建的 URI 调用 api,但我不确定如何构建类。我想到的选项是:

  1. 我的实现的基类,因此可以通过 base.InvokeURI(Uri myUri) 调用它。

  2. 一个分离类,因此它可以被多个实现使用

我也不确定反序列化应该驻留在何处。

最佳答案

我觉得在这种情况下使用Interface更合适:

public interface IURLInvoke 
{
string InvokeURI(Uri myUri);
}

// some implementation
public class YourURLInvoker: IURLInvoke
{
public string InvokeURI(Uri myUri)
{
// do something
}
}

public class YourClass
{
public IURLInvoke Invoker {get; set;}

public void InvokeURI(Uri myUri)
{
if(Invoker == null)
return;

string xml = Invoker.InvokeURI(Uri myUri);
// put your code for deserialization here
}
}

// here is an usage example:
YourClass a = new YourClass();
// set an Invoker, choose a strategy to invoke url
a.Invoker = new YourURLInvoker();
a.InvokeURI(url);

这种方法也称为 Strategy Pattern

关于c# - 用于创建 API URL 的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14434992/

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