09 2022 档案
摘要:简述 类型:创建型 目的:实现对客户端中对象族的平替。 对象族 具有共同主题的一组对象的集合。比如,华为的手机,笔记本,平板可以统称为华为族。 我们借以下案例来说说如何使用抽象工厂模式平替对象族。 优化案例 最初版 // 上传模块的接口 public interface Uploader { voi
阅读全文
摘要:简述 类型:结构型 目的:将对象集合组合成树形结构,使客户端可以以一致的方式处理单个对象(叶子节点)和组合对象(根节点) 话不多说,上优化案例。 优化案例 最初版v0 不使用组合模式。 现有一个文件和目录的管理模块。如样例。 public class File { // 文件类 private St
阅读全文
摘要:简述 类型:结构型 目的:降低对象创建时大量属性也随之被新建而带来的性能上的消耗 话不多说,我们看一个案例。 优化案例 最初版v0 现在需要采购一批办公用的电脑,以下是Computer类的定义。 public class Computer { private String sn; // 序列号,电脑
阅读全文
摘要:简述 类型:结构型 目的:通过抽离出多个维度相互组合(聚合)来代替继承,简化系统。 话不多说,看个优化案例。 优化案例 现有系统中,对于画面窗口的边框有一套样式来控制是否有圆角。因为新的需求,需要增加两套样式,一套控制边框线条的颜色(红、黄、蓝),一套控制边框有无阴影。我们来看看几种实现方式。 最初
阅读全文
摘要:简述 类型:创建型。 目的:杜绝相同对象的反复创建,提升系统性能。 话不多说,直接看实现方案例。 实现案例 饿汉式 项目启动时加载 public class Test { private static Test ins = new Test(); public static Test instanc
阅读全文
摘要:简述 类型:创建型 目的:通过拷贝快速创建相同或相似对象。 接下来我们看一个需要改进的案例。 优化案例 话不多说,先来看一个创建相同或相似对象的传统写法。 最初版v0 public class Department { private String name; private String coun
阅读全文
摘要:概要 类型:创建型 目的:创建对象时,提升属性设置的灵活性。 灵活性 类中定义了大量属性时,通常为了创建对象时属性初始设置的便利随之定义大量的构造方法。 为了既不定义过多的构造方法,又保证属性设置的便利性。 接下来我们看一个需要改进的案例。 对象创建的优化 现在有个Employee类,如下。 最初版
阅读全文
摘要:六大设计原则 单一职责原则 接口隔离原则 开闭原则 依赖倒置原则 里氏代换原则 迪米特法则 单一职责原则 我们分别看两个案例,一个是遵守单一职责原则,另一个是违背。 违背的案例 public class Computer { void calc() { System.out.println("计算数
阅读全文
摘要:由于本文需要有一定的Stream基础,不懂什么是Stream的同学请移步:Java Stream入门 操作分类 graph LR 操作分类 中间操作 终端操作 操作分类 中间操作 有状态 中间操作 无状态 短路 终端操作 非短路 终端操作 中间操作只进行操作的记录,而实际的操作是由终端操作来执行的。
阅读全文
摘要:前置知识 什么是进程,什么又是线程?咱不是讲系统,简单说下,知道个大概就好了。 进程:一个可执行文件执行的过程。 线程:操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 什
阅读全文