设计模式之单件模式(Singleton)
将类设计成单件模式之后,在系统中生成得对象只有一个,任何方法调用这个类,只能通过制定得方法得到这个类的唯一对象,类似于普通类中的静态方法和属性,不管这个类进行了多少次实例化,在内存中对于声明的静态方法和属性只有一个!
利用单件模式,这个类里的方法和属性在内存都只有一个对象,所以单件模式的应用场景是对于应用系统中某个对象是唯一的或是固定的,比如数据库的连接,应用程序的配置文件,WEB的计数器功能,等之类的应用!
在写单件模式类的时候是和写普通类组件有区别的!
我把我测试的一个小例子贴上来!
public class Class1
{
//标记该类对象的引用,为调用该类对象提供入口
private static Class1 _instance=null;
//将类构造函数修饰符标志为私有类,以防止该类被多次实例化,从而保证内存中只有一个类对象
private Class1()
{}
//对外提供该类对象的入口点
public static Class1 GetInstance()
{
//如果尚未实例化,则执行实例化操作,否则返回对象引用地址
if(_instance==null)
{
_instance=new Class1();
}
return _instance;
}
//^_^,随便定义字符串,供前台调用测试
public string yubin="";
}
上面这个小例子就是符合单件模式的!现在我们来测试一下
建一个WEB页,在其PAGE_LOAD方法里写上:
//定义一个类对象引用yb,并对对象中的一个域修改一下值
Class1 yb=Class1.GetInstance();
yb.yubin="I Love You";
//定义另一个类对象引用yb1,并调用对象中的域,显示在TextBox
Class1 yb1=Class1.GetInstance();
this.TextBox1.Text=yb1.yubin;
运行后,会发现TextBox里显示的值是修改后的"I Love You",可见前者对该对象变量做改变之后,后来调用者则取到的是修改后的最新值,说明在内存中只有一个对象实例存在!
将类设计成单件模式之后,在系统中生成得对象只有一个,任何方法调用这个类,只能通过制定得方法得到这个类的唯一对象,类似于普通类中的静态方法和属性,不管这个类进行了多少次实例化,在内存中对于声明的静态方法和属性只有一个!
利用单件模式,这个类里的方法和属性在内存都只有一个对象,所以单件模式的应用场景是对于应用系统中某个对象是唯一的或是固定的,比如数据库的连接,应用程序的配置文件,WEB的计数器功能,等之类的应用!
在写单件模式类的时候是和写普通类组件有区别的!
我把我测试的一个小例子贴上来!
public class Class1
{
//标记该类对象的引用,为调用该类对象提供入口
private static Class1 _instance=null;
//将类构造函数修饰符标志为私有类,以防止该类被多次实例化,从而保证内存中只有一个类对象
private Class1()
{}
//对外提供该类对象的入口点
public static Class1 GetInstance()
{
//如果尚未实例化,则执行实例化操作,否则返回对象引用地址
if(_instance==null)
{
_instance=new Class1();
}
return _instance;
}
//^_^,随便定义字符串,供前台调用测试
public string yubin="";
}
上面这个小例子就是符合单件模式的!现在我们来测试一下
建一个WEB页,在其PAGE_LOAD方法里写上:
//定义一个类对象引用yb,并对对象中的一个域修改一下值
Class1 yb=Class1.GetInstance();
yb.yubin="I Love You";
//定义另一个类对象引用yb1,并调用对象中的域,显示在TextBox
Class1 yb1=Class1.GetInstance();
this.TextBox1.Text=yb1.yubin;
运行后,会发现TextBox里显示的值是修改后的"I Love You",可见前者对该对象变量做改变之后,后来调用者则取到的是修改后的最新值,说明在内存中只有一个对象实例存在!