java单例模式

本文介绍了Java中的单例设计模式,包括饿汉式和懒汉式的概念及区别。饿汉式在类加载时创建对象,线程安全,而懒汉式在首次使用时创建,可能存在线程安全问题。示例代码展示了两种实现方式,强调了单例模式确保类只有一个实例并提供全局访问点的重要性。
摘要由CSDN通过智能技术生成
 1、单例设计模式介绍:
    即:保证一个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
 2、单例模式有两种方式:1) 饿汉式 2)懒汉式
 3、区别:
    1) 创建时机: 饿汉式在类加载时就创建了对象实例,懒汉式是在使用时创建;
    2) 饿汉式不存在线程安全问题,懒汉式存在线程安全问题
    3) 饿汉式不存在浪费资源的可能,懒汉式则不存在

1、饿汉式

/*
  单例模式饿汉式:只要类加载,就会被创建,无论对象是否使用
    1) 构造器私有化
    2) 在类的内部创建对象
    3) 提供公共的静态方法,返回对象
 */
public class singleInstance {
    public static void main(String[] args) {
//        Test test = new Test("132");
        Test myTest =  Test.getInstance();  //
        Test myTest1 =  Test.getInstance();  //
        myTest.getName();
        myTest1.getName();

        System.out.println("--------------------------");
    }
}

class Test{

    private String name;

    // 静态类属性,只在类加载时初始化一次,后续调用不再初始化
    // 修饰符为private,类外无法调用
    private static Test myTest = new Test("test");

    // 构造器私有化,防止直接new对象
    private Test(String name){
        this.name = name;
    }

    // 对外提供公共的方法,返回对象,且对象始终都是相同的
    // 静态方法,可以通过类名直接调用,
    public static Test getInstance(){
        return myTest;
    }
    public void getName(){
        System.out.println(this.name);
    }
}

2、懒汉式

/*
  单例模式懒汉式:只有使用到对象时才创建
  1、构造器私有化
  2、定义一个私有的静态类属性,只定义,不进行赋值
  3、提供public的方法,方法内部new一个对象并赋值
 */

class SingleInstance01{
    public static void main(String[] args) {
        Cat myCat = Cat.getInstance();
        Cat myCat1 = Cat.getInstance();
        System.out.println(myCat1 == myCat);
    }
}

class Cat {

    private String name;

    private static Cat cat;

    private Cat(String name){
        this.name = name;
    }

    public static Cat getInstance(){
        if(cat==null){
            cat = new Cat("小猫");
        }
        return cat;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值