• 设计模式&单例


    设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。现在设计模式已经有40多种这里举几个比较常用的

    单例模式:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。单例模式是设计模式中最简单的模式之一。通常,普通类的构造函数是公有的,外部类可以通过“new 构造函数()”来生成多个实例。但是,如果将类的构造函数设为私有的,外部类就无法调用该构造函数,也就无法生成多个实例。这时该类自身必须定义一个静态私有实例,并向外提供一个静态的公有函数用于创建或获取该静态私有实例。所以单例模式的核心就是构造方法私有化

    单例模式有两种实现方式:

      1、饿汉式  

            class Student
            {
                private Student(){}
    
                private static final Student s = new Student();
    
                public static Student getInstance()
                {
                    return s;
                }
            }

      2、懒汉式

            class Student
            {
                private Student(){}
    
                private static final Student s = null;
    
                public static Student getInstance()
                {
                    if(s==null)
                    {
                        s = new Student();
                    }
                    return s;
                }
            }

    懒汉式和饿汉式的区别:饿汉式是类一加载进内存就创建好了对象;懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,对象才开始创建。

    懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题

    可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,所以可以加双重判断来提高程序效率。

    public class Student {  
        private static Student instance;  
        private Student (){}  
        public static synchronized Student getInstance() {  
        if (instance == null) {  
            instance = new Student();  
        }  
        return instance;  
        }  
    }

    所以正常开发的时候还是使用饿汉式比较好--会浪费一丢丢的内存

    单例模式使用的时候要小心。之前同事将一个交易的类写成了单例,结果发现库里面所有交易员的单子都是同一个交易员下的单。

  • 相关阅读:
    echarts在ie浏览器y轴坐标偏移向上
    git常用命令总结[转]
    char和varchar类型的区别
    关于猴子选大王的问题
    VIM折叠代码命令
    用excel打开文本内容
    php事务操作示例
    Iframe内嵌Cookie丢失问题
    VIM折叠代码命令
    git常用命令总结[转]
  • 原文地址:https://www.cnblogs.com/ysmdbk/p/11429317.html
Copyright © 2020-2023  润新知