Java开发23种设计模式详解:提升工程化与代码复用

0 下载量 60 浏览量 更新于2024-07-15 收藏 1016KB PDF 举报
Java开发中的23种设计模式是软件工程中的核心概念,它们提供了在面向对象编程中解决常见问题的标准解决方案。本文旨在详细介绍这23种模式,帮助开发者提升代码质量、可读性和可维护性。设计模式主要分为三类: 1. 创建型模式(5种): - 工厂方法模式:用于将产品的创建过程封装起来,让客户端无需关心实例化细节。 - 抽象工厂模式:创建一系列相关或相互依赖的对象,而无需指定它们具体的类。 - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 建造者模式:将复杂的产品构建步骤分解,允许客户端参数化产品创建过程。 - 原型模式:通过复制已有对象来创建新对象,避免了构造过程。 2. 结构型模式(7种): - 适配器模式:让一个接口适应另一个接口,以方便它们之间的交互。 - 装饰器模式:动态地给对象添加功能,而无需改变其原有结构。 - 代理模式:为其他对象提供一个代理以控制对原对象的访问。 - 外观模式:为子系统提供一个一致的接口,隐藏其实现的复杂性。 - 桥接模式:将抽象部分和实现部分解耦,使得它们可以独立变化。 - 组合模式:使单一对象的行为看起来像一系列对象,用于构建树状结构。 - 享元模式:减少对象的实例数量,通过共享对象以节省内存。 3. 行为型模式(11种): - 策略模式:定义一组算法,让它们之间可以互相替换,而无需修改使用算法的客户。 - 模板方法模式:定义算法的框架,但允许子类重写某些步骤。 - 观察者模式:定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知。 - 迭代子模式:提供一种顺序访问聚合对象元素高效且延迟执行的方法。 - 责任链模式:处理请求时逐级传递,直到遇到可以处理该请求的对象。 - 命令模式:封装一个请求,使其可以延迟执行。 - 备忘录模式:记录计算结果,避免重复工作。 - 状态模式:根据对象的状态改变其行为。 - 访问者模式:使多个对象都可改变它们的行为,而无需修改其内部结构。 - 中介者模式:降低类之间的耦合,集中管理它们之间的通信。 - 解释器模式:将一个结构表示为一个语言,然后使用该语言解析和执行表达式。 文章强调了设计模式遵循的两大原则: - 开闭原则:强调程序对扩展开放,通过接口和抽象类保持模块间的松耦合,便于后期添加新功能。 - 里氏代换原则:保证子类能够安全替换基类,实现代码的稳定性和可重用性。 学习和掌握这些设计模式对于Java开发者而言至关重要,它们不仅提升了代码的灵活性和可维护性,还能促进团队协作和知识传承。通过理论与实践相结合的方式,读者可以更好地将设计模式应用于实际项目,从而成为更优秀的软件工程师。
2008-12-12 上传
目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 1.4 设计模式的编目 5 1.5 组织编目 7 1.6 设计模式怎样解决设计问题 8 1.6.1 寻找合适的对象 8 1.6.2 决定对象的粒度 9 1.6.3 指定对象接口 9 1.6.4 描述对象的实现 10 1.6.5 运用复用机制 13 1.6.6 关联运行时刻和编译时刻的 结构 15 1.6.7 设计应支持变化 16 1.7 怎样选择设计模式 19 1.8 怎样使用设计模式 20 第2章 实例研究:设计一个文档编 辑器 22 2.1 设计问题 23 2.2 文档结构 23 2.2.1 递归组合 24 2.2.2 图元 25 2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 Compositor和Composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 Monoglyph 30 2.4.3 Decorator 模式 32 2.5 支持多种视感标准 32 2.5.1 对象创建的抽象 32 2.5.2 工厂类和产品类 33 2.5.3 Abstract Factory模式 35 2.6 支持多种窗口系统 35 2.6.1 我们是否可以使用Abstract Factory 模式 35 2.6.2 封装实现依赖关系 35 2.6.3 Window和WindowImp 37 2.6.4 Bridge 模式 40 2.7 用户操作 40 2.7.1 封装一个请求 41 2.7.2 Command 类及其子类 41 2.7.3 撤消和重做 42 2.7.4 命令历史记录 42 2.7.5 Command 模式 44 2.8 拼写检查和断字处理 44 2.8.1 访问分散的信息 44 2.8.2 封装访问和遍历 45 2.8.3 Iterator类及其子类 46 2.8.4 Iterator模式 48 2.8.5 遍历和遍历过程中的动作 48 2.8.6 封装分析 48 2.8.7 Visitor 类及其子类 51 2.8.8 Visitor 模式 52 2.9 小结 53 第3章 创建型模式 54 3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)—类对象结构型 模式 92 4.2 Bridge(桥接)—对象结构型 模式 100 4.3 Composite(组成)—对象结构型 模式 107 4.4 Decorator(装饰)—对象结构型 模式 115 4.5 FACADE(外观)—对象结构型 模式 121 4.6 Flyweight(享元)—对象结构型 模式 128 4.7 Proxy(代理)—对象结构型 模式 137 4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator与Proxy 145 第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 模式 171 5.5 MEDIATOR(中介者)—对象行为型 模式 181 5.6 MEMENTO(备忘录)—对象行为型 模式 188 5.7 OBSERVER(观察者)—对象行为型 模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型 模式 208 5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 5.12.4 对发送者和接收者解耦 229 5.12.5 总结 231 第6章 结论 232 6.1 设计模式将带来什么 232 6.2 一套通用的设计词汇 232 6.3 书写文档和学习的辅助手段 232 6.4 现有方法的一种补充 233 6.5 重构的目标 233 6.6 本书简史 234 6.7 模式界 235 6.8 Alexander 的模式语言 235 6.9 软件中的模式 236 6.10 邀请参与 237 6.11 临别感想 237 附录A 词汇表 238 附录B 图示符号指南 241 附录C 基本类 244 参考文献 249