首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java学习笔记(中级篇)—单例模式

java学习笔记(中级篇)—单例模式

作者头像
chlinlearn
发布2019-08-01 13:08:04
4350
发布2019-08-01 13:08:04
举报
文章被收录于专栏:java老实人java老实人

一、概念

单例模式就是在一个java应用程序中,一个class类只有一个实例。

这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

二、好处

我们知道JVM的内存资源是很宝贵的,尤其是在程序很庞大的时候,尽量减少创建不必要的对象是能够很大程度的减少内存的开销。单例模式的好处就是能够节省内存,限制了实例对象的创建。

三、使用场景

在一个应用程序中的共享资源可以考虑使用单例模式,比如日志、配置、数据连接池、线程池等;熟悉servlet的童鞋一定知道,servlet组件也是单例模式的,因为频繁的创建servlet线程会消耗大量资源,影响系统性能,这也是单例模式的好处体现。

四、简单实现

单例模式有种实现方式:
  1. 恶汉式 所谓恶汉式,就是提前先创建好实例对象,直接拿就好了;
  2. 懒汉式 所谓懒汉式,就是需要用的时候再创建;懒汉式的缺点是非线程安全,只有加上关键字synchronized才能保证同步,但是会降低效率。
实现要素:
  1. 构造器私有化
  2. 实例对象私有化
  3. 创建公有的方法返回一个实例对象
代码实现
  1. 懒汉式
//单例模式-懒汉式
public class Singleton {
    private static Singleton singleton = null;
    
    private Singleton() {}
    
    public static synchronized Singleton getInstance() {
        if (singleton==null) {
            singleton = new Singleton();
        }
        return singleton;
    }

}
  1. 恶汉式
//单例模式-恶汉式
public class Singleton2 {
    private static Singleton2 singleton2 = new Singleton2();
    
    private Singleton2() {}
    
    public static Singleton2 getInstance() {
        return singleton2;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概念
  • 二、好处
  • 三、使用场景
  • 四、简单实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档