栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[读书笔记] Android 源码设计模式解析与实战 第2版

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[读书笔记] Android 源码设计模式解析与实战 第2版

https://www.jianshu.com/p/49baca8fd52e

文章目录
  • 面向对象的六大原则
    • 一、单例模式:
      • 1. 饿汉模式(不推荐)
      • 2. 懒汉模式(不推荐)
      • 3. DCL(一般用这种方式可以满足需求)
      • 4. 静态内部类模式(推荐)
    • 二、Builder模式
    • 三、原型模式

面向对象的六大原则
  • 单一职责原则(一个类只做一个事情)
一、单例模式: 1. 饿汉模式(不推荐)
private static Test sInstance = new Test();

private Test() {
}

public static Test getInstance() {
    return sInstance;
}

缺点:多线程下无法保证单例对象唯一

2. 懒汉模式(不推荐)
private static Test sInstance;

private Test() {
}

public static synchronized Test getInstance() {
    if (sInstance == null) {
        sInstance = new Test();
    }
    return sInstance;
}

优点:保证单例对象唯一(多线程下)
缺点:每次调用都会同步,造成不必要的同步开销

3. DCL(一般用这种方式可以满足需求)
private volatile static Test sInstance;

private Test() {
}

public static Test getInstance() {
    if (sInstance == null) {
        synchronized (Test.class) {
            if (sInstance == null) {
                sInstance = new Test();
            }
        }
    }
    return sInstance;
}

优点:需要时才初始化,能保证线程安全
缺点:第一次加载较慢,也可能出现失败的情况

4. 静态内部类模式(推荐)
private Test() {
}

public static Test getInstance() {
    return Holder.sInstance;
}

private static class Holder {
    private static final Test sInstance = new Test();
}

优点:在第一次调用的时候才会导致sInstance初始化,可以保证线程安全,对象唯一,同时延迟了初始化

二、Builder模式

优点:良好的封装性
缺点:会产生多余的Builder对象, 消耗内存

三、原型模式

即实现Cloneable接口, 调用clone方法, 用于使用new产生对象很复杂或者需要访问权限的情况

  • 浅拷贝
    复制类字段引用原始类的字段, 修改会影响原始类
  • 深拷贝
    在拷贝对象时, 对引用类型的字段也采用拷贝的形式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/338148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号