随笔分类 -  设计模式

摘要:设计模式目录 访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。 这里是 Java 程序库代码中该模式的一些示例: javax.lang.model.element.AnnotationValue 和 Annotation­Value­Visitor javax.lang.mode 阅读全文
posted @ 2021-01-25 17:52 花染梦 阅读(685) 评论(0) 推荐(0)
摘要:设计模式目录 模板方法模式是一种行为设计模式, 它在超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 这里是一些核心 Java 程序库中模版方法的示例: java.io.InputStream、 java.io.OutputStream、 java.io.Reader 阅读全文
posted @ 2021-01-25 15:32 花染梦 阅读(99) 评论(0) 推荐(0)
摘要:设计模式目录 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 Java 8 开始支持 lambda 方法, 它可作为一种替代策略模式的简单方式。 这里有一些核心 Java 程序库中策略模式的示例: 对 java.util.Com 阅读全文
posted @ 2021-01-24 23:26 花染梦 阅读(963) 评论(0) 推荐(0)
摘要:设计模式目录 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 状态模式与有限状态机的概念紧密相关。 其主要思想是程序在任意时刻仅可处于几种有限的状态中。 在任何一个特定状态中, 程序的行为都不相同, 且可瞬间从一个状态切换到另一个状 阅读全文
posted @ 2021-01-24 21:43 花染梦 阅读(951) 评论(0) 推荐(0)
摘要:设计模式目录 观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个“观察” 该对象的其他对象。 亦称: 事件订阅者、监听者、Event-Subscriber、Listener、Observer 核心 Java 程序库中该模式的一些示例: java.util.Obser 阅读全文
posted @ 2021-01-24 17:22 花染梦 阅读(486) 评论(0) 推荐(0)
摘要:设计模式目录 备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 亦称: 快照、Snapshot、Memento 备忘录模式结构 基于嵌套类的实现 该模式的经典实现方式依赖于许多流行编程语言 (例如 C++、 C# 和 Java) 所支持的嵌套类。 基于中级接 阅读全文
posted @ 2021-01-23 17:04 花染梦 阅读(448) 评论(0) 推荐(0)
摘要:设计模式目录 中介者模式是一种行为设计模式, 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互, 迫使它们通过一个中介者对象进行合作。 下面是核心 Java 程序库中该模式的一些示例: java.util.Timer (所有 schedule­XXX()方法) java.uti 阅读全文
posted @ 2021-01-23 14:43 花染梦 阅读(524) 评论(0) 推荐(0)
摘要:设计模式目录 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 下面是该模式在核心 Java 程序库中的一些示例: java.util.Iterator的所有实现 (还有 java.util.Scanner)。 java.util. 阅读全文
posted @ 2021-01-21 22:09 花染梦 阅读(491) 评论(0) 推荐(0)
摘要:设计模式目录 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。 亦称: 动作、事务、Action、Transaction、Command 命令模式在 Java 代码中 阅读全文
posted @ 2021-01-20 22:11 花染梦 阅读(924) 评论(0) 推荐(0)
摘要:设计模式目录 责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。 责任链模式在核心 Java 程序库中的一些示例: javax.servlet.Filter#doFilter() java.util.log 阅读全文
posted @ 2021-01-20 19:05 花染梦 阅读(137) 评论(0) 推荐(0)
摘要:设计模式目录 代理模式是一种结构型设计模式, 让你能够提供对象的替代品或其占位符。 代理控制着对于原对象的访问, 并允许在将请求提交给对象前后进行一些处理。 Problem 为什么要控制对于某个对象的访问呢? 举个例子: 有这样一个消耗大量系统资源的巨型对象, 你只是偶尔需要使用它, 并非总是需要。 阅读全文
posted @ 2021-01-20 15:30 花染梦 阅读(369) 评论(0) 推荐(0)
摘要:设计模式目录 享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。 亦称: 缓存、Cache、Flyweight 对象的常量数据通常被称为内在状态, 其位于对象中, 其他对象只能读取但不能修改其数值。 而 阅读全文
posted @ 2021-01-20 00:20 花染梦 阅读(193) 评论(0) 推荐(0)
摘要:设计模式目录 **外观模式(门面模式)**是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。 外观模式结构 核心 Java 程序库中的外观示例: javax.faces.context.FacesContext 在底层使用了 Life­Cycle、View­Handler 和 阅读全文
posted @ 2021-01-19 19:14 花染梦 阅读(404) 评论(0) 推荐(0)
摘要:设计模式目录 组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。 也可以称为整体-部分(Part-Whole)模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。 目录 阅读全文
posted @ 2021-01-18 19:37 花染梦 阅读(615) 评论(0) 推荐(0)
摘要:设计模式目录 桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。 为什么要有桥接模式? 假如你有一个几何 形状Shape类, 从它能扩展出两个子类: 圆形Circle和 方形Square 。 你希望对这样的类层次结构进行扩展 阅读全文
posted @ 2021-01-18 19:08 花染梦 阅读(593) 评论(0) 推荐(0)
摘要:设计模式目录 装饰模式是一种结构型设计模式, 允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 由于目标对象和装饰器遵循同一接口, 因此你可用装饰来对对象进行无限次的封装。 结果对象将获得所有封装器叠加而来的行为。 装饰模式结构 Java 核心程序库中有一些关于装饰的示例: ja 阅读全文
posted @ 2021-01-18 14:08 花染梦 阅读(219) 评论(0) 推荐(0)
摘要:设计模式目录 适配器模式是一种结构型设计模式, 它能使接口不兼容的对象能够相互合作。 适配器模式结构 Object adapter Class adapter Java 核心程序库中有一些标准的适配器: java.util.Arrays#asList() java.util.Collections# 阅读全文
posted @ 2021-01-18 11:48 花染梦 阅读(524) 评论(0) 推荐(0)
摘要:Creational Patterns Design Url Describe Factory Method Factory Method 在父类中提供一个创建对象的接口以允许子类决定实例化对象的类型。 Abstract Factory Abstract Factory 让你能创建一系列相关的对象, 阅读全文
posted @ 2021-01-17 18:30 花染梦 阅读(125) 评论(0) 推荐(0)
摘要:设计模式目录 单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 解决方案 所有单例的实现都包含以下两个相同的步骤: 将默认构造函数设为私有, 防止其他对象使用单例类的 new运算符。 新建一个静态构建方法作为构造函数。 该函数会 “偷偷” 调用私有构 阅读全文
posted @ 2021-01-17 18:29 花染梦 阅读(356) 评论(0) 推荐(0)
摘要:设计模式目录 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 原型模式结构 Java 的 Cloneable (可克隆) 接口就是立即可用的原型模式。 任何类都可通过实现该接口来实现可被克隆的性质。 java.lang.Object#clone() (类必须 阅读全文
posted @ 2021-01-17 18:28 花染梦 阅读(265) 评论(0) 推荐(0)