摘要: 简述 将各个功能拆分后分别封装(各功能解耦),需要时可自由组合(包括执行顺序) 话不多说,看个优化案例吧。 优化案例 最初版 以下是模拟客户端想服务端发送请求的业务流程。 客户端调用代码如下。 // 客户端 public class Client { public static void main( 阅读全文
posted @ 2022-11-09 22:27 spoonb 阅读(408) 评论(0) 推荐(2) 编辑
摘要: 简述 运行时,为原对象拓展新的行为。 相较于传统的继承来拓展新的行为,装饰器模式更为的灵活多变,当然实现起来也更为复杂。 话不多说,看个优化案例吧。 优化案例 最初版v0 现有系统中有设定窗口Style的模块,现在想增加一个圆角的样式。以下是现有模块的代码。 class Style { public 阅读全文
posted @ 2022-11-08 00:22 spoonb 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 简述 对客户端隐藏目标类,创建代理类拓展目标类,并且对于客户端隐藏功能拓展的细节,使得客户端可以像使用目标类一样使用代理类,面向代理(客户端只与代理类交互)。 话不多说,看一个优化案例。 优化案例 最初版v0 目前的功能是下载可以下载文件。 public class BiliBiliDownload 阅读全文
posted @ 2022-11-06 19:18 spoonb 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 简述 预先定义有着不同执行过程但结果相同的算法族,运行时指定所需算法。 算法族 此处为一组有共同主题的有相同结果的不同算法的集合。 话不多说,看个优化案例。 优化案例 最初版v0 不使用策略模式的案例。四种不同的计算策略。客户端的代码如下。 // 客户端 public class Client { 阅读全文
posted @ 2022-11-02 22:13 spoonb 阅读(465) 评论(0) 推荐(2) 编辑
摘要: 简述 提取算法中不变的部分封装成方法,变化的部分延迟到子类。 延迟到子类 这个说法在学习设计模式的时候经常出现,实际就是利用多态在子类中重写方法,使得实行时根据实例的类型调用不同的方法。 话不多说,看个案例。 优化案例 最初版v0 连接数据库我们有很多种方式,JDBC、JNDI、ODBC等等。下面是 阅读全文
posted @ 2022-10-27 23:26 spoonb 阅读(391) 评论(0) 推荐(2) 编辑
摘要: 简述 类型:结构型 目的:解决接口不兼容问题。 话不多说,看个案例吧。 优化案例 最初版v0 在真实的开发场景中,系统的每个模块都是分配给不同的团队或个人来开发的。这使得事前沟通变得尤为重要,且沟通问题也时有发生。现在公司有两个模块无法兼容,难道只能重写其中的一个吗? class User { St 阅读全文
posted @ 2022-10-03 22:33 spoonb 阅读(384) 评论(1) 推荐(0) 编辑
摘要: 简述 类型:创建型 目的:实现对客户端中对象族的平替。 对象族 具有共同主题的一组对象的集合。比如,华为的手机,笔记本,平板可以统称为华为族。 我们借以下案例来说说如何使用抽象工厂模式平替对象族。 优化案例 最初版 // 上传模块的接口 public interface Uploader { voi 阅读全文
posted @ 2022-09-30 22:24 spoonb 阅读(515) 评论(0) 推荐(1) 编辑
摘要: 简述 类型:结构型 目的:将对象集合组合成树形结构,使客户端可以以一致的方式处理单个对象(叶子节点)和组合对象(根节点) 话不多说,上优化案例。 优化案例 最初版v0 不使用组合模式。 现有一个文件和目录的管理模块。如样例。 public class File { // 文件类 private St 阅读全文
posted @ 2022-09-27 23:54 spoonb 阅读(465) 评论(0) 推荐(1) 编辑
摘要: 简述 类型:结构型 目的:降低对象创建时大量属性也随之被新建而带来的性能上的消耗 话不多说,我们看一个案例。 优化案例 最初版v0 现在需要采购一批办公用的电脑,以下是Computer类的定义。 public class Computer { private String sn; // 序列号,电脑 阅读全文
posted @ 2022-09-25 23:53 spoonb 阅读(581) 评论(0) 推荐(2) 编辑
摘要: 简述 类型:结构型 目的:通过抽离出多个维度相互组合(聚合)来代替继承,简化系统。 话不多说,看个优化案例。 优化案例 现有系统中,对于画面窗口的边框有一套样式来控制是否有圆角。因为新的需求,需要增加两套样式,一套控制边框线条的颜色(红、黄、蓝),一套控制边框有无阴影。我们来看看几种实现方式。 最初 阅读全文
posted @ 2022-09-24 23:50 spoonb 阅读(544) 评论(0) 推荐(1) 编辑