zoukankan      html  css  js  c++  java
  • 单例设计模式---懒汉式和饿汉式

    概念:在某些特殊场合中,一个类对外提供且只提供一个对象时,这样的类叫 做单例类,而设计单例的流程和思想叫做单例设计模式(如:。
     
    单例设计模式的实现流程
    • 私有化构造方法,使用private关键字修饰。

    • 声明本类类型的引用指向本类类型的对象,并使用private static关键字共同修饰。

    • 提供公有的get方法负责将对象返回出去,并使用public static关键字共同修饰。

    单例设计模式的实现方式

    • 单例设计模式的实现方式有两种:饿汉式 和 懒汉式,在以后的开发中推 荐饿汉式。

    code-饿汉式
    public class Singleton {

    // 2.声明本类类型的引用指向本类类型的对象,使用private static关键字共同修饰
    private static Singleton sin = new Singleton(); // 饿汉式

    // 1.私有化构造方法,使用private关键字修饰
    private Singleton() {}

    // 3.提供公有的get方法负责将对象返回出去,使用public static关键字共同修饰
    public static Singleton getInstance() {
    return sin;
    }
    }

     测试代码:

    public class SingletonTest {

    public static void main(String[] args) {

    src.Singleton s1 = Singleton.getInstance();
    src.Singleton s2 = Singleton.getInstance();
    System.out.println(s1 == s2); // true
    }
    }

    code--懒汉式
    public class Singleton {

    // 2.声明本类类型的引用指向本类类型的对象,使用private static关键字共同修饰
    private static src.Singleton sin = null; // 懒汉式

    // 1.私有化构造方法,使用private关键字修饰
    private Singleton() {}

    // 3.提供公有的get方法负责将对象返回出去,使用public static关键字共同修饰
    public static Singleton getInstance() {
    if(null == sin) {
    sin = new Singleton();
    }
    return sin;
    }
    }
    懒汉式和饿汉式区别:

            懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间。

            饿汉式是典型的空间换时间,当类装载的时候就会创建类实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断了,节省了运行时间。




  • 相关阅读:
    常用的gem source
    The `master` repo requires CocoaPods 0.29.0
    day 26 对象的封装 抽象和接口
    day25 面向对象继承 多态
    day24 面向对象 命名空间组合 以及继承
    day23 模块和包的复习 初识面向对象
    day22 模块和包
    day21 其他常用模块和异常处理
    day20 模块
    day19正则表达式和re模块
  • 原文地址:https://www.cnblogs.com/goldenwangyi/p/15031617.html
Copyright © 2011-2022 走看看