經過代理模式(包一層),實現對業務增長功能如日誌,異常處理,緩存結果,到達不破壞原有的業務代碼,擴展了功能

 

經過代理模式(包一層),來實現對業務增長功能如日誌,異常處理,緩存結果,感受挺好的,到達不破壞原有的業務代碼,擴展了功能緩存

/// <summary>
/// 包一層:沒有什麼技術問題是包一層不能解決的,若是有,就再包一層
/// 好比來個日誌記錄,能夠避免修改業務類,只須要修改代理類
/// 再來個異常處理
/// 再來個性能提高--緩存結果-單例
///
/// 經過代理,可以爲對象擴展功能(不是增長業務)而不去修改原始業務類,也就是包了一層, 
 
public class ProxySubject : ISubject
{
//組合一下
private static ISubject _Subject = new RealSubject();
public void DoSomething()
{
try
{
Console.WriteLine("prepare DoSomething...");
_Subject.DoSomething();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw ex;
}
}ide

private static Dictionary<string, bool> ProxyDictionary = new Dictionary<string, bool>();
public bool GetSomething()
{
try
{
Console.WriteLine("prepare GetSomething...");
string key = "Proxy_GetSomething";
bool bResult = false;
if (!ProxyDictionary.ContainsKey(key))
{
bResult = _Subject.GetSomething();
ProxyDictionary.Add(key, bResult);
}
else
{
bResult = ProxyDictionary[key];
}
return bResult;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
throw ex;
}
}
}性能

相關文章
相關標籤/搜索