Part1 2-6 Java单例模式 2020-01-02

设计模式


1. 简介:

    1.1 设计模式(Disign pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

    1.2 设计方案是软件开发人员在软件开发过程中面临的一般问题的解决方案。


2. 作用:

    2.1 项目中合理的运用设计模式可以完美的解决很多问题。

    2.2 每种模式在现在中偶有相应的原理来与之对应。

    2.3 每个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案。


3. 面向对象的基础设计模式:

图1.基础的设计模式






4. 单例模式(Singleton)


    例子:滚滚历史,永恒定律

--  一个朝代只有一个皇帝

--  军队的最高司令只有一个

--  一山不容二虎


4.1 目的:

    使类的一个对象成为该类系统中唯一的实例。


4.2 定义:

    一个类有且仅有一个实例,并且自行实例化向整个系统提供。


4.3 要点:

    4.3.1 某个类只能有一个实例

    4.3.2 必须自行创建实例

    4.3.3 必须自行向整个系统提供这个实例


4.4 优点:

    4.41 在内存中只有一个对象,节省内存空间。

    4.4.2 避免频繁的创建销毁对象,提高性能。

    4.4.3 避免对共享资源的多重利用


4.5 缺点:

    4.5.1 扩展较困难

    4.5.2 如果实例化后对象长期不利用,系统默认为垃圾进行回收,造成对象状态的丢失。


4.6 适用场景

    4.6.1 创建对象时占用资源过多,同时有需要用到该类对象

    4.6.2 对系统内资源要求统一读写,如读写配置信息

    4.6.3 当多个实例存在可能引起逻辑错误,如号码生成器


4.7 实现:

    4.7.1 只提供私有的构造方法

    4.7.2 含有一个该类的静态私有对象

   4.7.3 提供一个静态的公有方法用于创建、获取静态私有对象


4.8 代码实现方案:

    4.8.1 饿汉式

             空间换时间

图2.饿汉式


    4.8.2 懒汉式

             时间换空间

图3.懒汉式


4.9 两种方式对比:

4.9.1 饿汉式在类加载时就创建实例,第一次加载熟读快;懒汉式第一次使用时才进行实例化,第一次加载速度慢。

4.9.2 饿汉式线程安全,懒汉式在多线程操作中有出错的可能,存在线程风险。解决方案:同步锁、双重校验锁、内部静态类、枚举。

你可能感兴趣的:(Part1 2-6 Java单例模式 2020-01-02)