1、单例模式:作用就是保证 在应用程序的整个生命周期中,任何一个时刻,单例类的实例最多只有一个。应用:只有一个打印程序,只需要弹出一次Form。
定义:单例模式保证一个类仅有一个实例,同时这个类必须提供一个访问该类的全局访问点。
定义步骤:定义一个私有的静态全局保证唯一实例变量,类型就是改单例类本身。其次定义私有的构造函数,保证外部不能new来创建实例。定义外部可以访问的访问点,即静态方法,第一次访问就创建对象, 返回第一步的私有字段。
调用访问:Singleton.SingletonsingletonOne=Singleton.Singleton.GetInstance();
Singleton.SingletonsingletonTwoSingleton.Singleton.GetInstance();
实际上是同一个实例,第一个是在类内部创建了私有对象,第二个是返回的仍然是第一个的私有对象。???(为什么这个字段要私有)
实际上如果用多线程的话,有可能创建多个实例,需要对if null进行加锁处理,http://www.cnblogs.com/BoyXiao/archive/2010/05/07/1729376.html?login=1
Singleton 类
namespaceSingleton
{
public classSingleton
{
//定义一个私有的静态全局变量来保存该类的唯一实例
privatestaticSingletonsingleton;
/// <summary>
/// 构造函数必须是私有的
/// 这样在外部便无法使用 new 来创建该类的实例
/// </summary>
privateSingleton()
{
}
/// <summary>
/// 定义一个全局访问点
/// 设置为静态方法
/// 则在类的外部便无需实例化就可以调用该方法
/// </summary>
/// <returns></returns>
publicstaticSingletonGetInstance()
{
//这里可以保证只实例化一次
//即在第一次调用时实例化
//以后调用便不会再实例化
if (singleton == null)
{
singleton =new Singleton();
}
return singleton;
}
}
}
节点与元素概念有点复杂,其实都是对象:
Node 对象是整个 DOM 的主要数据类型。
节点对象代表文档树中的一个单独的节点。
节点可以是元素节点、属性节点、文本节点,或者也可以是“节点类型”那一节中所介绍的任何一种节点。
即文本节点可没有子节点之类的。一个XML文件必须有且只能有一个根节点
对于XML节点的探究:
继续深入到没有子节点的单一节点,比如根节点第一个子节点的第二个子节点 this.firstChild.childNodes[0].childNodes[1],它返回的是一个XML对象(Object) 。这里需要特别注意,节点标签之间的数据本身也视为一个节点 this.firstChild.childNodes[0].childNodes[1].firstChild ,而不是一个值。
节点的所有属性返回一个通用对象(Object),比如根节点第六个子节点的第三个子节点的所有属性为: this.firstChild.childNodes[5].childNodes[2].attributes 。 获得其中的“地址”属性: this.firstChild.childNodes[5].childNodes[2].attributes.地址 。
DOM是文档对象模型,其实就是树状结构的文档。
区分大小写,XmlDocument doc=new XmlDocument();
简单操作: XmlDeclaration=doc.CreateDeclaration("1.0","utf-8",null) 创建节点作为根。返回第一行
doc.AppendChild(dec);Doc.Save("books.xml") 会出错!没有根节点。
XmlElement books=doc.CreateElements("books") 创建元素doc.AppendChild(books)
...再创建子元素。name1.InnerText(会将标签转化成<等),name1.InnerXml(可以用来添加标签)name1.setAtrribute("s","ee")
追加Xml:if(File.Exsit("books.xml")){doc.Load("books") ;root=doc.DocumentElement 得到根。 }
读取数据。foreach( var item in root.ChildNodes){item.innerText,....} doc.selectSingleNode("/order/Items").removeAll()