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

    /*
    单例设计模式:保证一个类在内存中只有一个对象。
    
    模式:模式就是解决 一类 问题的固定步骤 。
    
    模式的概念最早起源于建筑行业....
    
    建房子的步骤都是一样子:
        
        打地基-----> 浇柱子------->盖楼面--------->砌墙--------->封顶---->装修-----入住
    
    软件行业中23种设计模式:
    
        单例设计模式
        模板设计模式
        装饰者设计模式
        观察者设计模式
        工厂设计模式
    
    单例设计模式的步骤:    
    
    
    饿汉单例设计模式
        1. 私有化构造函数。
        2. 声明本类的引用类型变量,并且使用该变量指向本类对象。
        3. 提供一个公共静态的方法获取本类的对象。
    
    懒汉单例设计模式:
        1. 私有化构造函数。
        2. 声明本类的引用类型变量,但是不要创建对象,
        3. 提供公共静态 的方法获取本类 的对象,获取之前先判断是否已经创建了本类 对象
        ,如果已经创建了,那么直接返回对象即可,如果还没有创建,那么先创建本类的对象,
        然后再返回。
    
    
    推荐使用: 饿汉单例设计模式。  因为懒汉单例设计模式会存在线程安全问题,目前还不能保证一类在内存中只有一个对象。
    
    
    */
    
    
    //饿汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
    class Single{
    
        //声明本类的引用类型变量,并且使用该变量指向本类对象
        private static    Single s = new Single();
    
        //私有化构造函数
        private Single(){}
    
        //提供一个公共静态的方法获取本类的对象
        public    static  Single getInstance(){
            return s;
        }
    }
    
    class Test{
    public static Test t=new Test();
    private Test{}
    public static Test getInstance(){
    return t;
    }
    }
    class Test{
    public static Test t;
    private Test{}
    public static Test getInstance(){
    if(t==null){
    t=new Test();
    }
    return t;
    }
    }
    
    //懒汉单例设计模式 ----> 保证Single在在内存中只有一个对象。
    
    class Single2{
        
        //声明本类的引用类型变量,不创建本类的对象
        private static Single2 s;
    
        //私有化了构造函数
        private Single2(){}
    
        //
        public static Single2 getInstance(){
            if(s==null){
                s = new Single2();
            }
            return s;
        }
    }
    
    
    
    
    
    class Demo5 
    {
        public static void main(String[] args) 
        {
            Single2 s1 = Single2.getInstance();
            Single2 s2 = Single2.getInstance();
            System.out.println("是同一个对象吗?"+ (s1==s2));
    
        }
    }
  • 相关阅读:
    Java 对象和类
    Java main方法解释
    Android点击EditText文本框之外任何地方隐藏键盘的解决办法
    页面跳转回来之后,网络请求自动刷新
    《买红薯的故事》醍醐灌顶,警钟长鸣。
    字符串比较器,例如按照时间的升序降序,或者姓氏排序
    android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口
    view在使用shape属性加圆角的同时,用代码修改其他background属性(例如颜色)不生效
    android基础学习之布局
    详解安卓项目-闹钟
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6262691.html
Copyright © 2011-2022 走看看