• 单例(Singleton)设计模式


    • 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。
    • 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法,如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象,因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。

    1.实现:

    package Singleton;
    
    public class Test {
        
        Bank b1=Bank.getInstance();
        Bank b2=Bank.getInstance();
        
    }
    
    // 饿汉式
    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;
        }
        
    }

     2.如何区分饿汉式和懒汉式

    饿汉式:

    • 坏处,对象加载时间过长
    • 好处:饿汉式是线程安全的

    懒汉式:

    • 好处,延迟对象的创建
    • 目前的写法坏处:线程不安全

    3.单例模式的使用场景

    单例模式的优点:

      由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方法来解决。

    ·

  • 相关阅读:
    vue中表格自适应屏幕一屏显示
    css+jq实现星星评分
    CSS中width,min-width和max-width之间的联系
    用jq动态给导航菜单添加active
    解决ios中input兼容性问题
    swiper按钮点击无效及控制器无效问题
    bootstrap 模态框在iphone微信内点击无效
    vue,onerror实现当图片加载失败时使用默认图
    MVC模板页使用
    MVC框架+vue+elementUI
  • 原文地址:https://www.cnblogs.com/codexlx/p/13541579.html
Copyright © 2020-2023  润新知