用于创建API URL的设计模式

Ket*_*hup 7 c# asp.net-mvc design-patterns

我正在构建一个与各种第三方API交互的类库.我使用了一个Facade模式来简化对复杂和混乱的调用的访问,并使用工厂模式来返回正确的实现.我现在正在尝试构建其中一个实现,但不能想到优雅的设计.

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

我打算使用HttpClient来调用我构建的URI的api,但我不确定如何构造类.我想到的选项是:

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

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

我也不确定反序列化应该驻留在哪里.

phn*_*kha 11

我认为在这种情况下使用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);
Run Code Online (Sandbox Code Playgroud)

这种方法也称为战略模式