Java 单例 (Singleton)设计模式
2016-08-17 18:04
447 查看
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。
懒汉式
单例(Singleton)设计模式-饿汉式/* * 单例模式:使得一个类只能创建一个对象 * 饿汉式:以下四步 */ public class TestSingleton { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); System.out.println(s1 == s2); // true } } class Singleton { // 私有化构造器,使得在类的外部不能调用此构造器 private Singleton() { } // 在类的内部创建一个类的实例 private static Singleton instance = new Singleton(); // 私有化对象,通过方法调用 // 使得这个方法只能用类来调用,因此设置为static,同时类的实例也必须为static public static Singleton getInstance() { return instance; } }
懒汉式
单例(Singleton)设计模式-懒汉式/* * 单例模式之——懒汉式 * 可能存在线程问题~ */ public class TestSingleton1 { public static void main(String[] args) { Singleton1 s1 = Singleton1.getInstance(); Singleton1 s2 = Singleton1.getInstance(); System.out.println(s1 == s2); // true } } class Singleton1{ //1.私有化构造器 private Singleton1(){ } //2.先把实例变为空,可能存在线程安全为题 private static Singleton1 instance = null; //通过类获得实例,static public static Singleton1 getInstance(){ if (instance == null){ instance = new Singleton1(); } return instance; } }
相关文章推荐
- Java设计模式:Singleton(单态模式)
- java设计模式之Singleton(单态)
- 在Java中应用设计模式之Singleton
- java设计模式学习系列之一:单例模式(Singleton)
- 在 Java 中应用设计模式 -- Singleton [转载】
- 在Java中应用设计模式--Singleton
- 关于JAVA设计模式中的Singleton
- Java设计模式连载_1_单例模式(Singleton)
- java设计模式之Singleton
- 在 Java 中应用设计模式 -- Singleton
- JAVA设计模式——单例(Singleton)模式
- Java中设计模式(2) Singleton模式
- 在Java中应用设计模式--Singleton
- java中的Singleton (单立)设计模式(还没写完)
- java设计模式之创建模式--singleton (demo)
- 在Java中应用设计模式--Singleton
- 在 Java 中应用设计模式 -- Singleton
- 创建型设计模式---JAVA Singleton模式(单身模式)
- java设计模式学习系列之一:单例模式(Singleton) 收藏
- [设计模式] - 深入浅出单实例Singleton设计模式(Java版)