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)   :      在单独的线程中执行 指定的字符串命令

    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    Python3.4 + Django1.7.7 搭建简单的表单并提交
    python3.4 + Django1.7.7 表单的一些问题
    TypeScript(10): String(同JS)
    TypeScript(09): Number(同JS)
    TypeScript(08): 循环
    TypeScript(07): 条件语句(同JS)
    TypeScript(06): 运算符(同JS)
    TypeScript(05): 变量声明
    TypeScript(04): 基础类型
    TypeScript(03):基础语法
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11355154.html
Copyright © 2011-2022 走看看