在系统配置的地方使用使用单件模式
系统配置是经常被读取的。
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