黑马程序员技术交流社区

标题: 什么是单例模式啊? [打印本页]

作者: --_—    时间: 2014-7-9 10:15
标题: 什么是单例模式啊?
本帖最后由 --_— 于 2014-7-10 14:16 编辑

单例模式?是什么概念,有什么特点呢?又有哪些作用呢?
作者: 签发    时间: 2014-7-9 10:46
单例模式是一种常用的软件设计模式。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
作者: _xixi_    时间: 2014-7-9 13:27
单例模式,顾名思义,就是一个类只能new一个实例,特点主要有:
1、私有化构造函数
2、提供一个私有的静态的类型变量,比如以下提供的是一个私有的静态的Person类型变量;
3、提供一个公共的静态的方法,用来返回上面的变量,这个变量指向的是单例模式里面的有且仅有一个的实例;

  1.    class Person
  2.     {
  3.         public string Name { get; set; }
  4.         private static Person p; //声明一个私有静态变量

  5.         //私有构造函数,只能在当前类里面使用
  6.         private Person()
  7.         {
  8.             this.Name = "小明";
  9.         }

  10.         //公共静态方法,返回一个指向特定对象的变量
  11.         public static Person GetSingle()
  12.         {
  13.             //if判断使得永远不会重新new第二个Person对象
  14.             if (p==null)
  15.                 p = new Person();
  16.             return p;
  17.         }

  18.     }

  19.     class Program
  20.     {
  21.         static void Main(string[] args)
  22.         {
  23.             Person p = new Person();    //错误!不能new ,因为不能调用Person类里面的私有构造函数

  24.             Person p0 = Person.GetSingle();
  25.             Person p1 = Person.GetSingle();
  26.             Person p2 = Person.GetSingle();//p0、p1、p2指向的都是同一个对象

  27.             Console.WriteLine("{0}--{1}--{2}", p0.Name, p1.Name, p2.Name);//输出 小明--小明--小明
  28.             Console.ReadKey();
  29.         }
  30.     }
复制代码




作者: --_—    时间: 2014-7-10 14:13
_xixi_ 发表于 2014-7-9 13:27
单例模式,顾名思义,就是一个类只能new一个实例,特点主要有:
1、私有化构造函数
2、提供一个私有的静态 ...

thank you!
作者: gwljp    时间: 2014-7-10 16:35
单例模式一般多用于和数据库的链接




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2