《java与模式》-8 单例模式 singleton

来源:互联网 发布:郑州管家婆软件怎么样 编辑:程序博客网 时间:2024/06/17 09:17

单例模式

多例模式可以有多个实例,多例类必须自己创建、管理自己的实例,并向外界提供自己的实例;单例模式确保一个类只有一个实例,而且自行实例化,并自行向整个系统提供这个实例;
资源管理一般都是单例的,1.资源管理器必须只有一个实例。2.它必须自行初始化。3.允许整个系统访问自己;
例子:回收站,整个系统只能有一个回收站,整个系统使用这个唯一的实例,回收站自行提供这个实例;
1.懒汉式没有必要加双重检查;
2。除非有单一实例的需要否则不要使用单例;
3.多个JVM系统的分散式系统要避免使用有状态的单例;
4.多个类加载器,同一个JVM中会有多个类加载器,当两个类加载器同时加载同一个类时会出现两个实例,这种情况避免使用有状态的单例类;(很多J2EE服务器允许同一个服务器中有多个Servlet引擎,每一个引擎都有独立的类加载器,经由不同类加载器加载的对象之间是绝缘的。

特殊的单例-多例模式

抽象工厂类可以使用单例,将具体工厂设置成单例;建造者模式可以使用单例,将具体建造者设置成单例;

序列生成器与单例多例模式

首先将数据库的键值更新为下一个可用值,然后将旧值提供给客户端。
将键的查询与管理集中到一个对象上,称为序列管理器,整个系统只需要一个序列管理器,需要让整个系统访问,一个客户端系统往往需要不止一个键值,可以将单例内部扩展成一个聚集,可以存储任意个键值,而对象本省是一个单例对象;