zoukankan      html  css  js  c++  java
  • 单例设计模式

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

      1、 控制类的创建,不让其他类创建本类对象:    private 私有化构造方法

      2、本类中创建本类对象;

      3、提供公共的访问方法

    public class demon1_singleton {
        /*
         * 单例设计模式
         */
        public static void main(String[] args) {
            /*Singleton s2 = Singleton.s1;
            Singleton s3 = Singleton.s1;
            
            System.out.println(s2 == s3);*/
            Singleton s1 = Singleton.getInstance();
            Singleton s2 = Singleton.getInstance();
            System.out.println(s1 == s2);    //   true    同一个对象
                    
        }
    
    }
    
    class Singleton{
        //私有构造方法,其他类不能访问该构造了,即:   其他类不能new 对象了
        private Singleton(){
            
        }
        private static Singleton s = new Singleton();     //  饿汉式
        
        public static Singleton getInstance() {
            return s;
        }
    }
    * 单例写法两种:
        * (1)饿汉式 开发用这种方式。
        * 
                //饿汉式
                class Singleton {
                    //1,私有构造函数
                    private Singleton(){}
                    //2,创建本类对象
                    private static Singleton s = new Singleton();
                    //3,对外提供公共的访问方法
                    public static Singleton getInstance() {
                        return s;
                    }
                    
                    public static void print() {
                        System.out.println("11111111111");
                    }
                }
        * (2)懒汉式 面试写这种方式。多线程的问题?      --多线程时  可能会创建多个对象
        * 
                //懒汉式,单例的延迟加载模式
                class Singleton {
                    //1,私有构造函数
                    private Singleton(){}
                    //2,声明一个本类的引用
                    private static Singleton s;
                    //3,对外提供公共的访问方法
                    public static Singleton getInstance() {
                        if(s == null)
                            //线程1,线程2
                            s = new Singleton();
                        return s;
                    }
                    
                    public static void print() {
                        System.out.println("11111111111");
                    }
                }
        * (3)第三种格式
        * 
                class Singleton {
                    private Singleton() {}
                
                    public static final Singleton s = new Singleton();   //final是最终的意思,被final修饰的变量不可以被更改
                }

    单例模式的应用:

      Runtime 类

          没有构造方法,被私有了

        Runtime r = Runtime.getRuntime() 

        r.exec(str)   :      在单独的线程中执行 指定的字符串命令

    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    pip换国内源
    docker build 的 cache 机制
    jenkins 修改log路径
    lsb_release: command not found 解决
    Linux 添加开机启动项的三种方法
    FAT AP v200R005 配置二层透明模式(web&命令行,开局)
    SharePoint 2010 文档管理系列之星级评论功能
    SharePoint 2010 文档管理之过期归档工具
    SharePoint 2010 文档管理系列之文档搜索
    SharePoint 2010 文档管理系列之准备篇
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11355154.html
Copyright © 2011-2022 走看看