黑马程序员技术交流社区

标题: 什么是单例工作模式阿! [打印本页]

作者: 陈善奔    时间: 2013-12-25 21:14
标题: 什么是单例工作模式阿!
本帖最后由 陈善奔 于 2013-12-26 20:43 编辑

什么是单例工作模式阿!
作者: 776699    时间: 2013-12-25 21:25
java模式之单例模式:          单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。 特点:       1,一个类只能有一个实例       2,自己创建这个实例       3,整个系统都要使用这个实例    例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。    外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。一个例子:Windows 回收站。在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。两种形式:1,饿汉式单例类public class Singleton {  private Singleton(){}  //在自己内部定义自己一个实例,是不是很奇怪?  //注意这是private 只供内部调用  private static Singleton instance = new Singleton();  //这里提供了一个供外部访问本class的静态方法,可以直接访问    public static Singleton getInstance() {    return instance;      } } 2,懒汉式单例类public class Singleton {   private static Singleton instance = null;  public static synchronized Singleton getInstance() {  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次    //使用时生成实例,提高了效率!  if (instance==null)    instance=new Singleton();  return instance;   } } 第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
作者: 刘旭升    时间: 2013-12-25 21:26
概念可以查资料的!:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
更为深入的你可以引荐下网址:http://blog.sina.com.cn/s/blog_4e9078020100almr.html
作者: 夏德宇    时间: 2013-12-25 21:49
单例模式,单:一个,例:实例,一个实例的模式。
一个类,私有化构造方法,对外提供静态的(能在实例化前直接用类调用)获得实例的方法,保证只能实例化一个对象。
具体怎么样、好处之类的参照楼上。




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