Java设计模式_单例模式

概念

  • java中单例模式是一种常见的设计模式,单例模式的写法有好几种.这里主要介绍:懒汉式 饿汉式.
单例模式有以下特点:
  • 单例类必须只能有一个实例.
  • 单例类必须自己创建自己的唯一实例.
  • 单例类必须给所有其他对象提供这一实例.
单例的好处
  • 当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象.
  • 对象的盛名周期是整个项目运行期间.
//单例
public class Test1 {
    public static void main(String[] args) {
        Person p = Person.getInstance(); 
        Person p1 = Person.getInstance();
        
        }
}
//d单例:在程序在运行期间不管通过什么途径,执行创建一个对象
//对象的生命周期是整个项目运行期间

class Person{//饿汉式单例模式
    //static
    static Person person = new Person();
     static Person getInstance(){//静态工厂的方法
         return person;
     }
}

class Student {//懒汉式单例模型
    
    //volatile每个线程都有自己的栈
volatile  static Student stu = null;
 static Student getInstance(){
     synchronized (Student.class) {
         if (stu == null) {
                stu = new Student();
            }
    }
    
     return stu;
 }  
}

在上述代码中Person类是一开始就创建了空间,属于饿汉式单例模式.

  • 优点:在类加载初期就创建对象,调用getInstance的时候,没有同步方法,运行时性能较高.
  • 缺点:类加载速度慢,占用太多的资源空间.
    而Student是在用的时候创建空间,属于懒汉式单例模型
  • 优点: 避免了第一种方法的缺点,同时,可以在多线程下运行安全.
  • 缺点:因为使用了锁,在运行中效率慢.
    volatile关键字是起到双重保障的作用.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java设计模式——单例模式 单例模式应该是大家最为熟知的一种设计模式了,相信大家或多或少的都在自己的项目中使用过...
    gogoingmonkey阅读 531评论 0 2
  • 概念 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,比较常见的有:懒汉式单例、饿汉式单例。单例模...
    怡红快绿阅读 489评论 0 0
  • 阅读原文 在介绍单例模式之前,我们先了解一下,什么是设计模式?设计模式(Design Pattern):是一套被反...
    gyl_coder阅读 179评论 0 3
  • 今天笔试的时候被问到了单例模式,听了很多次,但是却没有认真看过,所以交了白卷,懒的教训啊!还有一题比较有趣的题目:...
    shakesbears阅读 380评论 0 3
  • 过去总是看到身边很多人经常都情绪化,每次跟情绪化的人在一起都要格外小心,深怕触碰到惹火上身!时间久了我就觉得...
    盛世贏家葉小華阅读 1,046评论 0 0