美文网首页
3.单例模式-饿汉式-静态代码块

3.单例模式-饿汉式-静态代码块

作者: 测试员 | 来源:发表于2019-11-17 21:50 被阅读0次

步骤

1)单利模式 防止其他类中new,所以private修饰
2)类中创建对象----但是要在静态代码块中创建
3)对外提供一个静态方法来创建对象

优点

写法比较简单,就是在类装载的时候就完成实例化。
避免了线程同 步问题。

缺点

在类装载的时候就完成实例化,没有达到懒加载(Lazy Loading)的效果。如果从始 至终从未使用过这个实例,则会造成内存的浪费。【小公司无所谓,服务器空间足够,同事水平参差,这样看方便理解,一般情况下,可维护性第一,性能第二】

代码实现

(蛇精病啊,学完之后发现一样,花里胡哨的没啥用)

package yuan.com.dp.singleton;

/**
 * 测试类
 */
class Test_SingleTon_2 {
    public static void main(String[] args) {
        SingleTon_2 ton_1 = SingleTon_2.getSingleTon_2();
        SingleTon_2 ton_2 = SingleTon_2.getSingleTon_2();
        System.out.println(ton_1 == ton_2);
    }
}


public class SingleTon_2 {
    /**
     * 1.单利模式 防止其他类中new,所以private修饰
     */
    private SingleTon_2() {
    }

    /**
     * 2.类中创建对象----但是要在静态代码块中创建
     * 这里要说一下final,作用是不允许被修改变量的值,能修改值的时机是静态代码块以及有参构造加载时。
     *
     */
    private static final SingleTon_2 singleTon_2;

    static {
        singleTon_2 = new SingleTon_2();

    }

    /**
     * 3.对外提供一个静态方法来创建对象
     *
     * @return singleTon_2实例
     */
    public static SingleTon_2 getSingleTon_2() {
        return singleTon_2;
    }
}

相关文章

  • Singleton 单例模式

    饿汉式单例模式 饿汉式单例模式 通过静态代码块增加异常处理 懒汉式单例模式 存在线程安全问题 懒汉式单例模式 解决...

  • Java 单例模式

    什么是单例模式? 单例模式即一个类在程序中永远只有一个实例。 单例的写法。 饿汉式(静态常量) 饿汉式(静态代码块...

  • 单例模式的八种写法比较

    单例模式的八种写法比较 1、饿汉式(静态常量)[可用] 2、饿汉式(静态代码块)[可用] 3、懒汉式(线程不安全)...

  • 设计模式-创建者模式-单例模式

    零、 本文纲要 一、 单例模式 饿汉式① 静态变量方式② 静态代码块③ 枚举 懒汉式① 静态方法(线程不安全)② ...

  • 单例模式的八种实现

    单例模式有八种实现方式 饿汉式(有两种方法)静态常量饿汉式静态代码块饿汉式 懒汉式(有三种方法)线程不安全懒汉式线...

  • 3.单例模式-饿汉式-静态代码块

    步骤 1)单利模式 防止其他类中new,所以private修饰2)类中创建对象----但是要在静态代码块中创建3)...

  • 单例模式

    常见的单例模式有哪几种 最常见的有四种,饿汉式、双重检测懒汉式、静态内部类、枚举 饿汉式单例模式是什么 饿汉式单例...

  • Java设计模式一--单例模式

    一、单例模式单例模式主要分为饿汉式、懒汉式(非线程安全、线程安全、双重检查)、静态内部类、枚举。1.饿汉式 2.懒...

  • 2018-12-04

    单例模式 目录 -饿汉模式 -懒汉模式 - 双重检测 - 静态内部类 - 枚举实现 - 容器实现 饿汉模式 代码 ...

  • 单例

    使用单例设计模式的类只有一个对象实例,基于此核心来编写代码。 懒汉式 饿汉式 内部静态类实现单例 枚举单例 上述单...

网友评论

      本文标题:3.单例模式-饿汉式-静态代码块

      本文链接:https://www.haomeiwen.com/subject/ixymictx.html