一、单例模式的主要特点:
1、只能有一个实例。
2、在单例类中创建自己的实例。
3、创建的实例通过一个公有的方法去让其它类去使用。
二、实现上面三个的方式是:
1、将构造方法私有化。
2、在类中创建一个本类对象。
3、提供一个方法可以获取该对象。
三、单例模式分为两种:1、饿汉式。2、懒汉式。
四、具体的实现方法如下代码:
1、饿汉式:这种也是开发中常用的。它不涉及线程安全问题
package cn; public class Persion { private String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } private Persion(){//提供一个私有的构造方法 } private static Persion p = new Persion();//创建一个私有的对象 public static Persion getInstance(){//提供一个外部访问的对象的方法 return p; } }
调用代码:
package cn; public class Demo1 { public static void main(String[] args) { Persion p = Persion.getInstance(); Persion p1 = Persion.getInstance(); System.out.println(p==p1); } }
执行结果:
true
2、懒汉式:这种在开发中不常用,因为它涉及线程不安全的情况,但是可以用过线程同步解决,如果这样比较繁琐,还不如用饿汉式比较方便。
package cn; public class Persion { private String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } private Persion(){//提供一个私有的构造方法 } private static Persion p = null;//创建一个私有的对象的引用 public static Persion getInstance(){//提供一个外部访问的对象的方法 if(p==null){ p = new Persion();//判断是否为空,如果为空就创建对象,就在这里有线程安全问题,如果多两个人同时访问的情况下,会有创建多个对象的情况 } return p; } }
调用上面的代码和结果和饿汉式的一样。
结果懒汉式的方式如下:
package cn; public class Persion { private String name; public void setName(String name){ this.name = name; } public String getName(){ return name; } private Persion(){//提供一个私有的构造方法 } private static Persion p = null;//创建一个私有的对象的引用 //public static synchronized Persion getInstance(){//如果使用这种,这种的相率很低,不宜使用。 public static Persion getInstance(){//提供一个外部访问的对象的方法 if(p==null){ synchronized(Persion.class){ if(p==null){//使用双重判断 p = new Persion();//判断是否为空,如果为空就创建对象,就在这里有线程安全问题,如果多两个人同时访问的情况下,会有创建多个对象的情况 } } } return p; } }
相关推荐
文章详细描述了什么是单例设计模式以及单例设计模式的的好处和应用。
详细介绍了java中单例设计模式各种方式,已经改进方案
java单例设计模式,重点介绍了静态内部类的实现方式
java单例设计模式-饿汉式-懒汉式[参照].pdf
java单例设计模式-饿汉式-懒汉式[归纳].pdf
Java中懒汉单例设计模式线程安全测试,单例设计模式的测试
简单的单例模式,帮助大家理解代码,主要是用纯java写的。
。
。
。
。
单例设计模式源码和案例解析,详细分析四种单例设计模式的使用方法, 并附有博客文档说明。单例设计模式源码和案例解析
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
Java经典的设计 模式单例设计模式,此资源为整理的ppt文档
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 如果我们要让类在一个虚拟机中只能产生一个对象: 将类的构造器的访问...
Java设计模式-单例模式(懒汉和恶汉)
Java 单例设计模式
单例模式(Singleton Pattern)是 Java 中最常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。