在系統配置的地方使用使用單件模式
系統配置是經常被讀取的。
1.之所以這樣用的好處我現在還不知道
2.單件模式的設計 如下
1.私有構造函數一個【阻止類被實例化】
2.靜態的方法一個
3.
private static object lockHelper = new object(); 這句話的作用我還不知道
內部維護一個當前類的實例對象
private static volatile SiteUrls instance = null;
4.調用的時候函數是如何執行的?
SiteUrls.GetSiteUrls().Urls
#region 站點僞Url信息類==========================================================
/// <summary>
/// 站點僞Url信息類
/// </summary>
public class SiteUrls
{
#region 內部屬性和方法
private static object lockHelper = new object();
private static volatile SiteUrls instance = null;
string SiteUrlsFile = Utils.GetXmlMapPath(DTKeys.FILE_SITE_XML_CONFING);
private ArrayList _Urls;
public ArrayList Urls
{
get { return _Urls; }
set { _Urls = value; }
}
private NameValueCollection _Paths;
public NameValueCollection Paths
{
get { return _Paths; }
set { _Paths = value; }
}
private SiteUrls()
{
Urls = new ArrayList();
Paths = new NameValueCollection();
BLL.url_rewrite bll = new BLL.url_rewrite();
List<Model.url_rewrite> ls = bll.GetList("");
foreach (Model.url_rewrite model in ls)
{
Paths.Add(model.name, model.path);
model.page = model.page.Replace("^", "&");
model.querystring = model.querystring.Replace("^", "&");
Urls.Add(model);
}
}
#endregion
public static SiteUrls GetSiteUrls()
{
SiteUrls _cache = CacheHelper.Get<SiteUrls>(DTKeys.CACHE_SITE_HTTP_MODULE);
lock (lockHelper)
{
if (_cache == null)
{
CacheHelper.Insert(DTKeys.CACHE_SITE_HTTP_MODULE, new SiteUrls(), Utils.GetXmlMapPath(DTKeys.FILE_URL_XML_CONFING));
instance = CacheHelper.Get<SiteUrls>(DTKeys.CACHE_SITE_HTTP_MODULE);
}
}
return instance;
}
}
#endregion