懒汉单例饿汉单例

简介: 设计模式:单例                     设计模式:23个设计模式                                                          创建型                                             ...

设计模式:单例

                     设计模式:23个设计模式

                                                          创建型

                                                          行为型

                                                          结构型

架构模式:

                战略      


单例/单态:如何能保证一个类只出一个对象?     

                                                                  懒汉式:

                                                                              缺点:访问速度慢

                                                                              优点:使用才加载对象          

                                                                              synchronized 同步可以解决懒汉式问题

                                                                 饿汉式:

                                                                             优点:访问速度快

                                                                             缺点:提前加载

 下面说一下懒汉式和饿汉式的区别及优点:

                                                              饿汉式不管有没有调用对象创建方法,都会预先在系统中创建一个静态对象

                                                              懒汉式不会预先创建对象,只有在第一次调用时才创建对象

                                                              饿汉式优点: 在多线程模式下是安全的

                                                              缺点: 没有调用方法前就被加载,会占用内存

                                                              懒汉式优点:只有调用方法才创建对象,不会占用内存

                                                              缺点:在多线程模式下不安全



public class Hello {//饿汉式单例

    //构造器私有化 不可以在外界创建此类对象
    private Hello() {
        System.out.println("创建对象");
    }

    //静态成员只有一份 加载本类对象 也只有一个
    private static Hello hello = new Hello();//静态只可能有一份

    //此方法是返回本类唯一对象
    public static Hello getHello() {
        return hello;//只要调用此方法就可以创建对象
    }

}


public class SayHello {

    private SayHello(){
        System.out.println("SayHello创建了对象");
    }

    private static SayHello sayHello;//声明对象

    public static synchronized SayHello getSayHello(){
        if(sayHello==null){//判断调用为空吗?
            sayHello=new SayHello();//如果不为空再创建对象
        }
        return sayHello;//如果不为空直接返回对象
    }

}

              
目录
相关文章
|
2月前
单列模式【饿汉式和懒汉式】
单列模式【饿汉式和懒汉式】
25 0
|
设计模式 存储
static应用之 单例设计模式(饿汉单例&懒汉单例)
本章我们来学习单例模式中的饿汉单例和懒汉单例,那么什么是单例模式呢?应用该模式的这个类永远只有一个实列,即一个类只能创建一个对象例如电脑上的任务管理器对象只需要一个就能解决问题,可以节省内存空间先定义一个类,把构造器私有如下图,先来看一下没有把构造器私有化的SingleInstance类,此时Test类中可以随意创建多个SingleInstance的实例化。 在SingleInstance类中用private修饰无参构造器,此时左边new方法报错了。我们在右边创建一个静态变量来存储对象,变量名为instan
64 0
|
7月前
|
设计模式 安全 Java
单例模式:饿汉模式、懒汉模式
单例模式:饿汉模式、懒汉模式
106 0
|
7月前
|
SQL 安全 Java
懒汉式单例的3个坑
懒汉式单例的3个坑
|
7月前
|
安全 Java 编译器
单例模式之饿汉模式&懒汉模式
单例模式之饿汉模式&懒汉模式
|
安全
线程安全的单例懒汉式
线程安全的单例懒汉式
42 0
|
安全 Java
懒汉式单例
懒汉式单例
101 0
|
安全 Java
饿汉式单例
饿汉式单例
|
缓存 安全 Java
双重检查锁单例
双重检查锁单例
单例模式(懒汉和饿汉)——独生子女挺好
单例模式(懒汉和饿汉)——独生子女挺好