什么是单例模式?
单例模式就是某个类只有唯一一个实例。
单例模式的意图
单例模式的意图是为了确保一个类有且仅有一个实例,并且为它提供一个全局的访问点
单例模式的要点
- 一个类只有一个实例
- 类必须自行创建这个实例
- 类自行向系统提供实例
常见的单例实现方式
- 饿汉模式
/** * 饿汉单例模式 * @author zhanfgwei * @version $Id: HungrySingleton.java, v 0.1 2014年9月20日 下午10:17:11 Lenovo Exp $ */ public class EagerSingleton { /***初始化一个实例**/ private static final EagerSingleton instance = new EagerSingleton(); /** * 私有化的构造方法 */ private EagerSingleton() { super(); } /** * 静态工厂方法获取实例 * * @return */ public static EagerSingleton getInstance() { return instance; } }
- 懒汉模式-线程安全
/** * * @author zhangwei * @version $Id: SafeLazySingleton.java, v 0.1 2014年9月20日 下午10:25:04 Lenovo Exp $ */ public class SafeLazySingleton { /** * 实例属性 */ private static SafeLazySingleton instance = null; /** * 私有化构造方法 */ private SafeLazySingleton() { } /** *同步的静态工厂方法 * * @return */ synchronized public static SafeLazySingleton getInstance() { if (instance == null) { instance = new SafeLazySingleton(); } return instance; } }
- 内部类方式
/** * * @author zhangwei * @version $Id: InnerSingleton.java, v 0.1 2014年9月20日 下午11:11:26 Lenovo Exp $ */ public class InnerSingleton { /** * 私有化的构造方法 */ private InnerSingleton() { } /** * 静态内部类,持有实例 * * @author zhangwei * @version $Id: InnerSingleton.java, v 0.1 2014年9月20日 下午11:22:35 Lenovo Exp $ */ private static class InstanceHolder { static InnerSingleton instance = new InnerSingleton(); } /** * 静态工厂方法, * * @return */ public static InnerSingleton getInstance() { return InstanceHolder.instance; } }
- 登记式
/** * * @author zhangwei * @version $Id: RegisterSingletone.java, v 0.1 2014年9月20日 下午10:27:12 Lenovo Exp $ */ public class RegisterSingleton { private static Map<String, RegisterSingleton> registers = new ConcurrentHashMap<String, RegisterSingleton>(); static { registers.put(RegisterSingleton.class.getName(), new RegisterSingleton()); } private RegisterSingleton() { } public static RegisterSingleton getInstance(String name) { if (name == null) { name = RegisterSingleton.class.getName(); } if (registers.get(name) == null) { try { registers.put(name, (RegisterSingleton) Class.forName(name).newInstance()); } catch (Exception e) { LoggerUtils.error("异常"); } } return registers.get(name); } }
相关推荐
Java面向对象(高级)-- 单例(Singleton)设计模式
JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...
java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...
简单的单例模式举例Singleton 分为恶汉式 懒汉式
//单例模式,始终只产生一个对象 /*public class SingleTest { public static void main(String[] args) { SingleTon singleTon1=SingleTon.getInstance(); SingleTon singleTon2=SingleTon.getInstance(); ...
java设计模式,单例模式的不同实现方式
- 23种设计模式 - 工厂方法模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) - 适配器模式(Adapter) - 装饰...
Java中单例模式的定义是:一个类只有一个实例,而且自行实例化并且向整个系统提供这个实例。 优点:由于单例模式在内存中只有一个实例,减少了内存开支和系统的性能开销;单例模式可以避免对资源的多重占用。 ...
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 学习demo
java 三种设计模式Demo 其中对单例模式做了详细的讲解,及性能和线程安全方面的优化其中Singleton.java为经典单例模式。
主要介绍了Java设计模式单例模式(Singleton)用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...
主要介绍了Java设计模式之单态模式(Singleton模式)介绍,本文讲解了如何使用单例模式、使用单例模式注意事项等内容,需要的朋友可以参考下
《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个...
里面包含了23中设计模式源代码,其中包括工厂模式(Factory)、单例(Singleton)、观察者模式(Observer)、适配器模式(Adapter)、Template模式、Decorate模式、proxy模式等 这些代码对于初学者看起来稍微复杂一些,我...
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在
Java高手真经 - Java Web系统设计与架构 源代码(一)设计模式 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1...
适合Java设计模式期末考试选择题复习,形式如下: 10.(单选题)Facade(外观)模式的意图是 正确答案: A A.希望简化现有系统的使用方法,你需要定义自己的接口 B.将一个无法控制的现有对象与一个特定借口相匹配。 C....
单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2 结构型模式 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器...
单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在