摘要: 一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。 定义: 为了避免请求发送者与多个请求处理者耦合在一起(使用 if 选择语句处理请求),将所有请求的处理者通过前一对象记住其下一个对象的引用(链表)而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 结构: 请求对 阅读全文
posted @ 2022-11-25 23:06 在博客做笔记的路人甲 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 共享对象! 目的: 减少创建对象的数量,以减少内存占用和提高性能。 核心奥义: 通过享元类工厂来控制类的生成,相同的对象被放在Map中。 享元对象的结构: 内部状态:可以共享。一般为不可变的属性。 外部状态:不可以共享。一般为可变的属性。 例子 享元类接口:包含了享元类要实现的方法。 interfa 阅读全文
posted @ 2022-11-25 20:31 在博客做笔记的路人甲 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 就是封装!就是封装!就是封装! 把一个很复杂的过程,包装成一个方法。 调用的时候,只使用了一条语句,非常简介!非常美观! 比如:创建一个对象,只需要: new 类名(); 它的内部实现过程自有人帮你做。 迪米特法则(Law of Demeter)又叫作最少知识原则(The Least Knowled 阅读全文
posted @ 2022-11-25 16:14 在博客做笔记的路人甲 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 给某个对象,动态新增功能。 构成: 1、抽象接口:真实对象与装饰对象实现同一个接口。 2、装饰父类:持有一个真实对象的引用,即可为真实对象新增功能。 3、真实对象:被扩展的对象。 4、装饰对象:继承装饰父类,负责添加功能的装饰对象。 比如: 我有一个IO输出流,它只能写入字节数据。真实对象:File 阅读全文
posted @ 2022-11-25 16:00 在博客做笔记的路人甲 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 把部分和整体的关系用树形结构来表示,使客户端可以使用统一的方式处理部分对象(比如具体文件)和整体对象(比如一个文件夹)。 构成: Component 抽象角色:定义了叶子和容器结构的共同方法 Leaf 叶子角色:无子节点。 Composite 容器角色:可以包含字节点。 比如: 我要对一个文件进行查 阅读全文
posted @ 2022-11-25 14:25 在博客做笔记的路人甲 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 一个类中有两个可以扩展的组件,需要扩展的时候会很麻烦,通过桥接接口,把其中一个组件独立出去。 应用场景: 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象 阅读全文
posted @ 2022-11-25 11:45 在博客做笔记的路人甲 阅读(431) 评论(0) 推荐(0) 编辑