zoukankan      html  css  js  c++  java
  • Java设计模式--单列设计模式

    设计模式:解决某一类问题行知最有效的方法。java有23种设计模式

    单列设计模式:

    解决一个类在内存中只存在一个对象

    思路:(要保证对象的唯一性)

    1.为了避免其它程序建立该对象,先禁止替他类创建改对象,(构造函数私有化)

    2.还能让其他程序可以访问到该对象,只能在该类中自己生成一个对象

    3.为了其他程序可以访问到当中的值,可以设计一些方法获取到值。

    当然他们当中有两种方式:懒汉式,饿汉式。

    (其中两者的区别是在内存当中的何时创建)

    下面是饿汉式的代码:(写法)(开发一般用这个方法)

    //创建一个学生类的单列设计模式
    class Student
    {
        private String name="zhulang"; 
        //构造函数私有化
        private Student(){};
        //静态自己创建自己的对象
        private static Student s =new Student();
        
        //静态方法获取到该对象
        public static String getInstance()
        {
            return s.name;
        }

    懒汉式:(面试时一般用这个)

    原理,对象是在方法被调用时,才初始化,也叫做对象的延时加载

    如下:只有Student类进内存。但是对象没有存在,只getInstance方法是才被创建

    class Student
    {
        private String name = "zhulang";
    
        // 构造函数私有化
        private Student()
        {
        };
    
        // 静态自己创建自己的对象
        private static Student s = null;
    
        // 静态方法获取到该对象
        public static String getInstance()
        {
            //对象是否被其他程序调用 
            if (s == null)
            {
                //上锁
                synchronized (Student.class)
                {
                    if (s == null)
                        s = new Student();
                }
            }
            return s.name;
        }
    
    }
  • 相关阅读:
    深入理解volatile
    定时任务分布式锁的简单实现
    spring boot在tomcat运行多环境配置分离方案
    java spring boot data jpa和javaagent兼容问题
    RabbitMQ PHP操作类,守护进程及相关测试数据
    Python httpsqs封装类
    Python守护进程(多线程开发)
    python游戏打包exe
    处理谷歌地图marker旋转
    在vue-cli项目中mockjs和vConsole的使用
  • 原文地址:https://www.cnblogs.com/ganwei/p/4556195.html
Copyright © 2011-2022 走看看