• 单例设计模式(详解)


    单例设计模式

    模式:模式就是解决一类问题的固定步骤

    单例设计模式:保证一个类在内存中只有一个对象

    举例:多个浏览器向服务器发送请求,只创建一个servlet对象处理相应的请求,而不是每接收一个请求,就创建一个servlet对象

    1.饿汉单例设计模式

              1.私有化构造函数

              2.声明本类的引用类型变量,并且使用该变量指向本类对象

              3.提供一个公共静态的方法获取本类的对象

    //保证Single在内存中只有一个对象
    public class Single {
        //私有化构造函数
        private Single(){
    
        }
         //声明本类的引用类型变量,并且使用该变量指向本类对象
        private static Single single = new Single();
        //提供一个公共的方法获取本类的对象
        public static Single getInstance(){
            return single;
        }
    }
    
    class Test{
        public static void main(String[] args) {
    
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            boolean flag = s1.equals(s2);
            System.out.println("是同一个对象吗?"+flag);
        }
    }
    

      

    运行结果:
    
    是同一个对象吗?true
    

      

    2.懒汉单例设计模式

             1.私有化构造函数

             2.声明本类的引用类型变量,但不要创建对象

             3.提供静态公共的方法获取本类的对象,获取之前先判断是否已经创建了本类对象,如果已经创建了,那么直接返回对象即可,如果还没创建,那么先创建本类的对象,然后再返回。

    //保证Single在内存中只有一个对象
    public class Single {
        //私有化构造函数
        private Single(){
    
        }
         //声明本类的引用类型变量,
        private static Single single ;
        //提供一个公共的方法获取本类的对象
        public static Single getInstance(){
            if(single == null){//判断对象是否创建
                single = new Single();
            }
            return single;
        }
    }
    
    class Test{
        public static void main(String[] args) {
    
            Single s1 = Single.getInstance();
            Single s2 = Single.getInstance();
            boolean flag = s1.equals(s2);
            System.out.println("是同一个对象吗?"+flag);
        }
    }
    

      

    运行结果:
    
    是同一个对象吗?true
    

      

  • 相关阅读:
    [排序算法] 选择排序(2种)
    [排序算法] 交换排序(2种)
    针对Oracle表 列字段的增加、删除、修改以及重命名操作sql
    myelcipse中SVN进行代码更新和提交
    SVN服务器的搭建
    无法变更启动序列号
    mybatis入门学习记录(一)
    java中判断两个字符串是否相等的问题
    xshell如何同时打开多个标签
    设计模式(六) xml方式实现AOP
  • 原文地址:https://www.cnblogs.com/zyx110/p/10663002.html
Copyright © 2020-2023  润新知