A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© --_— 中级黑马   /  2014-7-9 10:15  /  1442 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 --_— 于 2014-7-10 14:16 编辑

单例模式?是什么概念,有什么特点呢?又有哪些作用呢?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

5 个回复

倒序浏览
单例模式是一种常用的软件设计模式。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
单例模式,顾名思义,就是一个类只能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-9 13:32

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
_xixi_ 发表于 2014-7-9 13:27
单例模式,顾名思义,就是一个类只能new一个实例,特点主要有:
1、私有化构造函数
2、提供一个私有的静态 ...

thank you!
回复 使用道具 举报
单例模式一般多用于和数据库的链接
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马