设计模式--------(1)单例模式
1.介绍
单例模式属于创建型模式,此模式一个类只有一个实例,且类自己创建实例,并提供方法获取此实例。
主要用途:一个全局使用的类,频繁的创建和销毁
关键代码:构造函数是私有的
例子:如WINDOWS的资源管理器,不能同时打开两个及两个以上。
2.优缺点
优点:
- 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
- 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化
注意事项:lazy方式时getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。
例子
private void Form1_Load(object sender, EventArgs e) { SingleDemo One = SingleDemo.GetInstance(); One.Name = "HHHHHHHHHHHHHHHHHH"; SingleDemo Two = SingleDemo.GetInstance(); MessageBox.Show(Two.Name); } public class SingleDemo { private SingleDemo() { } private static SingleDemo instance = new SingleDemo(); public static SingleDemo GetInstance() { return instance; } private string name; public string Name { get { return name; } set { name = value; } } }
输出
HHHHHHHHHHHHHHHHHH