我们希望使用Http Connection
的单个实例与服务器进行通信,因为它可以保证与一端的http端点进行通信
例如:
MyConnection.GetRoute<ABC>.DoStuff() --https://user.site.com/abc/
MyConnection.GetRoute<XYZ>.DoStuff() --https://user.site.com/xyz/
从设计模式来看,Singleton似乎是完美的案例
public class MyConnectionHelper
{
private static MyConnection instance;
private MyConnectionHelper() {}
public static MyConnectionHelper Instance
{
get{
if(instance == null){
instance = new MyConnection();
}
return instance;
}
}
}
但是我们需要一些凭据来根据需要使用连接和代理信息,这些属性应该公开
public class MyConnectionHelper
{
public static string authKey;
public static string proxyUrl;
private static MyConnection instance;
private MyConnectionHelper() {}
public static MyConnectionHelper Instance
{
get{
if(instance == null) {
instance = new MyConnection(proxyUrl, authKey);
}
return instance;
}
}
}
是否有更好的设计模式适合此用例,以及更好地公开required/optional
参数,这些参数可以在创建连接之前提供,并在整个循环中重复使用。
答案 0 :(得分:1)
你可以使用类似下面的代码。设置凭据时,它会标记要重置的连接。在此之后第一次访问连接时,它将重新创建连接。
private static bool resetConnection;
private static string authKey;
private static string proxyUrl;
public static string AuthKey
{
get => authKey;
set
{
authKey = value;
resetConnection = true;
}
}
public static string ProxyUrl
{
get => proxyUrl;
set
{
proxyUrl = value;
resetConnection = true;
}
}
public static MyConnection HelperInstance
{
get
{
if(resetConnection == null)
{
instance = new MyConnection(proxyUrl, authKey);
resetConnection = false;
}
if(instance == null)
{
instance = new MyConnection(proxyUrl, authKey);
resetConnection = false;
}
return instance;
}
}