美文网首页
设计模式基础(四)

设计模式基础(四)

作者: Maxinxx | 来源:发表于2019-03-13 17:32 被阅读0次

单例模式之饿汉式

  • 概述:确保类在内存中只有一个对象(该实例必须自动创建,并且对外提供)
  • 优点:在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能
  • 缺点:没有抽象层,因此扩展很难。职责过重,在一定程度上违背了单一职责。
  • 步骤:如何保证类在内存中只有一个对象呢?
    A:把构造方法私有
    B:在成员位置自己创建一个对象
    C:通过一个公共的方法提供访问
public class Student {
    //构造私有
    private Student() {}
    
    //自己造一个对象
    //静态方法只能访问静态成员变量,加静态
    //为了不让外界直接访问修改这个值,加private
    private static Student s = new Student();
    
    //提供公共的访问方式
    //为了保证外界能够直接使用该方法,加静态
    public static Student getStudent() {
        return s;
    }
}

创建两个对象,如果最后打出来的是true,表示这两个对象是指向同一个对象的,实际上还是一个对象;如果是false,表示,确实创建了两个对象。

public class StudentDemo {
    public static void main(String[] args) {
        Student s1 = Student.getStudent();
        Student s2 = Student.getStudent();
        System.out.println(s1 == s2);
    }
}

单例模式之懒汉式

  • 饿汉式:类一加载就创建对象
  • 懒汉式:用的时候,才去创建对象
public class Teacher {
    private Teacher() {}
    
    private static Teacher t = null;
    
    //面试时记得加synchronized
    public synchronized static Teacher getTeacher() {
        if(t == null) {
            t = new Teacher();
        }
        return t;
    }
}
public class TeacherDemo {
    public static void main(String[] args) {
        Teacher t1 = Teacher.getTeacher();
        Teacher t2 = Teacher.getTeacher();
        
        System.out.println(t1 == t2);
        System.out.println(t1);
        System.out.println(t2);
    }
}
面试题:单例模式的思想是什么?写一个代码体现。

开发:饿汉式(是不会出问题的单例模式)
面试:懒汉式(是可能会出问题的单例模式)

  • 懒汉式会出的问题有:
  1. 懒加载(延迟加载)
  2. 线程安全问题
    a. 是否多线程环境(可以是)
    b. 是否有共享数据(是)
    c. 是否有多条语句操作共享数据(是)

相关文章

  • 设计模式基础(四)

    单例模式之饿汉式 概述:确保类在内存中只有一个对象(该实例必须自动创建,并且对外提供) 优点:在系统内存中只存在一...

  • 设计模式(一)设计模式基本概念

    设计模式基础 软件设计模式的概念 软件设计模式( Software Design Pattern ),又称设计模式...

  • 简说设计模式之策略模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是策略模式 策略(Strategy)模式...

  • JavaScript 设计模式(上)——基础知识

    系列链接 JavaScript 设计模式(上)——基础知识 JavaScript 设计模式(中)——1.单例模式 ...

  • 23种常用设计模式

    基础知识 设计模式概述 从招式与内功谈起——设计模式概述(一):设计模式从何而来? 从招式与内功谈起——设计模式概...

  • 23种常用设计模式

    基础知识 设计模式概述 从招式与内功谈起——设计模式概述(一):设计模式从何而来? 从招式与内功谈起——设计模式概...

  • 23种常用设计模式

    基础知识 设计模式概述 从招式与内功谈起——设计模式概述(一):设计模式从何而来? 从招式与内功谈起——设计模式概...

  • 工厂模式

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)...

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

网友评论

      本文标题:设计模式基础(四)

      本文链接:https://www.haomeiwen.com/subject/mcutmqtx.html