栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单例设计模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单例设计模式

目录

设计模式的定义

单例设计模式(Singleton)

实现方式分成:饿汉式 VS 懒汉式

饿汉式跟懒汉式的区别

单例模式的应用场景


设计模式的定义

在大量的时间中总结和理论化之后优选的代码结构、编程风格、解决问题的思考方式。就像是经典的棋谱。不同的棋局,使用不同的棋谱、套路。

单例设计模式(Singleton)

采取一定的方法保证在整个系统中,对某个类只能存在一个实例对象,并且该类只提供一个取得其对象实例的方法。

具体的步骤:

  1. 类的构造器访问权限设置成private。这样在类的外部无法产生类的对象,只能在类内部产生类对象。
  2. 类的某个静态方法以返回类内部创建的对象。
  3. 静态方法只能访问类中静态成员变量,所以指向类内部产生的该类对象变量也必须定义成静态的。

实现方式分成:饿汉式 VS 懒汉式
public class Singleton{
    public static void main(String[] args){
        Bank bank1 = Bank.getInstance();
        Bank bank2 = Bank.getInstance();
        //bank1和bank2是同一个对象
        System.out.println(bank1 == bank2);


        Order order1 = Order.getInstance();
        Order order2 = Order.getInstance();
        //order1和order2是同一个对象
        System.out.println(order1 == order2);
    }

}

//饿汉式-直接造对象
class Bank {

    //1.私有化构造器
    private Bank(){
    
    }
    //2.内部创建对象
    //4.要求此对象也必须声明为静态的
    private static Bank instance = new Bank();

    //3.提供公共的方法返回类的对象
    public static Bank getInstance(){
        return instance;
    }

}

//懒汉式-调方法的时候再创建对象
class Order{

    //1.私有化构造器
    private Order(){
    }

    //2.先声明当前类对象,没有初始化
    //4.此对象也必须声明为static的
    private static Order instance=null;

    //3.声明public、static的返回当前类对象的方法
    public static Order getInstance(){
        if(instance == null){
            instance = new Order();
        }
        return instance;
    }
}


饿汉式跟懒汉式的区别

饿汉式:

        好处:线程安全

        坏处:对象加载时间过长。

懒汉式:

        好处:延迟对象的创建

        坏处:目前的写法,线程不安全。后续优化。

单例模式的应用场景

由于单例模式只生成一个实例,减少系统性能开销。

当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久的驻留在内存的方式来解决。

举例:java.lang.Runtime

  • 网站的计数器。统计pv、uv等数据。
  • 应用程序的日志应用。由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
  • 数据库连接池。连接池只用造一个,数据库连接是一种数据库资源。
  • 读取配置文件的类。一般也只有一个对象,没必要每次读取数据都生成一个对象。
  • Application应用程序。
  • Windows的Task Manager 任务管理器
  • Windows的Recycle Bin 回收站

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号