设计模式--------(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

 

posted @ 2019-07-24 00:13  足天  阅读(120)  评论(0编辑  收藏  举报