您好,登錄后才能下訂單哦!
單例模式是一種常用的軟件設(shè)計(jì)模式,在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。
通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例,即一個(gè)類只有一個(gè)對(duì)象實(shí)例。
這一模式的目的是使得類的一個(gè)對(duì)象稱為系統(tǒng)中的唯一實(shí)例。
單例模式的要點(diǎn)有三個(gè):一是該類只能有一個(gè)實(shí)例;二是該類必須自行創(chuàng)建這個(gè)實(shí)例;三是該類必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
從具體實(shí)現(xiàn)角度來(lái)說(shuō),就是以下三點(diǎn):
單例模式的類只提供私有的構(gòu)造函數(shù);
類的定義中含有一個(gè)該類的靜態(tài)私有對(duì)象;
該類提供了一個(gè)靜態(tài)且公用的函數(shù)用于創(chuàng)建或者獲取它本身的靜態(tài)私有對(duì)象;
個(gè)人覺(jué)得對(duì)于初級(jí)程序而言,技能知識(shí)的學(xué)習(xí)要理論和代碼一起研究,才能夠做到心領(lǐng)神會(huì),下面就奉上小編自己敲的代碼以供你參考,當(dāng)然你也可以直接下載后在本地查看!
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace WpfApp.Practices
{
public class getXMLConfigInfo
{
#region 定義一個(gè)獲取本地XML配置信息的單例模式類 getXMLConfigInfo
//定義一個(gè)靜態(tài)且私有的getXMLConfigInfo的類對(duì)象XMLConfigInstance并賦為空
private static getXMLConfigInfo XMLConfigInstance = null;
//定義一個(gè)靜態(tài)且公用的方法用于統(tǒng)一調(diào)用該類中的方法
public static getXMLConfigInfo getXMLConfigInstance()
{
if(XMLConfigInstance == null)
{
XMLConfigInstance = new getXMLConfigInfo();
}
return XMLConfigInstance;
}
//自定義一個(gè)私有的構(gòu)造函數(shù)
private getXMLConfigInfo()
{
//getXMLConfigRoot("SystemConfigs");
}
#endregion
/// <summary>
/// 加載本地SystemConfig.xml文件并查找根節(jié)點(diǎn)
/// </summary>
/// <param name="singleNode">傳入要查找的節(jié)點(diǎn)</param>
/// <returns></returns>
public XmlNode getXMLConfigRoot(string singleNode)
{
//創(chuàng)建一個(gè)XmlDocument對(duì)象
XmlDocument xmlDoc = new XmlDocument();
//定義并獲取程序運(yùn)行時(shí)的本地路徑
String xmlPath = System.Environment.CurrentDirectory;
//判斷該路徑下是否存在SystemConfig.xml文件
if(!File.Exists(xmlPath + "\\SystemConfig.xml"))
{
throw new Exception("This File isn't Exist!");
}
//加載SystemConfig.xml文件
xmlDoc.Load(xmlPath + "\\SystemConfig.xml");
//選中SystemConfig.xml文件中的根節(jié)點(diǎn)
XmlNode root = xmlDoc.SelectSingleNode("SystemConfigs");
//定義需要查找的節(jié)點(diǎn)
XmlNode NeedRoot = null;
//遍歷根節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
foreach(XmlNode childNode in root.ChildNodes)
{
//如果遍歷得到的子節(jié)點(diǎn)與所需要查找的節(jié)點(diǎn)相同,則返回該節(jié)點(diǎn)
if(childNode.Name.Equals(singleNode))
{
NeedRoot = root.SelectSingleNode(singleNode);
}
}
return NeedRoot;
}
/// <summary>
/// 獲取SystemConfig.xml文件中的預(yù)留電話/手機(jī)號(hào)碼
/// </summary>
/// <param name="type">傳入要獲取的節(jié)點(diǎn)的屬性名稱</param>
/// <returns></returns>
public string getPersonalContactInfo(string type)
{
//得到所需的節(jié)點(diǎn)屬性的父節(jié)點(diǎn)
XmlNode NeededRoot = getXMLConfigRoot("SelfPrePhone");
//定義變量用于暫時(shí)保存獲取出來(lái)的節(jié)點(diǎn)屬性的值
string NeedValue = "";
//如果所需杰節(jié)點(diǎn)屬性的父節(jié)點(diǎn)不存在,則拋出錯(cuò)誤信息
if (NeededRoot == null)
{
throw new Exception("讀取配置節(jié)點(diǎn)SelfPrePhone文件錯(cuò)誤");
}
//遍歷所需節(jié)點(diǎn)的所有屬性,并返回所查找的屬性的值
foreach (XmlNode NeedTypeChildNode in NeededRoot.ChildNodes)
{
NeedValue = NeedTypeChildNode.Attributes[type].Value;
}
return NeedValue;
}
}
}
以上的代碼便是單例模式寫的獲取本地XML文件中的配置信息的類
<SystemConfigs>
<AutoCloseSystemSet>
<CloseSystemTimeSet CloseTime="14:30:00"/>
</AutoCloseSystemSet>
<SelfPrePhone>
<PrePhone tel="0571-81234567" Phone="18765432173"></PrePhone>
</SelfPrePhone>
</SystemConfigs>
這段XML便是本地SystemConfig.xml文件中的內(nèi)容信息
string test1 = getXMLConfigInfo.getXMLConfigInstance().getPersonalContactInfo("Phone");
string test3 = getXMLConfigInfo .getXMLConfigInstance().getPersonalContactInfo("tel");
以上兩個(gè)語(yǔ)句便是通過(guò)單例模式類getXMLConfigInfo來(lái)獲取在SystemConfig.xml中配置的預(yù)留手機(jī)號(hào)和預(yù)留電話號(hào)碼的前端寫法。
感謝你耐心閱讀完本文,祝你學(xué)習(xí)愉快昂,哈哈。。。。。。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。