Java 设计模式系列(1) —— 单例模式

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实! 

单例设计模式

单例模式的特点

  • 某个类只能有一个实例
  • 它必须自行创建这个类
  • 它不许向整个系统提供这个类的实例

饿汉模式/立即加载

饿汉式的特点: 在使用类时就已经将对象加载完毕

饿汉式的缺点:

  • 由于在使用前就加载完毕,会造成内存资源的浪费
  • 在获取实例时,若没有同步方法,容易产生非线程安全问题。

饿汉式的创建方式:

  • 静态常量饿汉式
  • 静态代码块饿汉式
  • 枚举类
静态常量饿汉式
    // 静态常量的饿汉式
    public class Singleton1 {
    	private static Singleton1 instance = new Singleton1();
    
    	private Singleton1() {
    	}
    
    	public static Singleton1 getInstance() {
    		return instance;
    	}
    }
静态代码块饿汉式
    // 静态代码块的饿汉式
    public class Singleton2 {
    	private static Singleton2 instance;
    	
    	private Singleton2() {
    	}
    	
    	static {
    		instance = new Singleton2();
    	}
    	
    	public static Singleton2 getInstance() {
    		return instance;
    	}
    }
饿汉式的非线程安全问题

如果在获取实力式没有同步,则会产生非线程安全问题
【示例】

使用静态常量饿汉式,创建一个 Article 方法, 包含标题内容两个属性,返回一个实例对象并重写 toString 方法

    public class Article {
    	private static Article object = new Article();
    	private static String title;
    	private static String content;
    	
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值