序
前言
关于本书
目录
第一部分 基础知识
第1章 Bitter传说
1.1 自由降落的Java开发
1.1.1 生活中的反模式
1.2 使用设计模式强调正面
1.2.1 设计模式在线资源
1.2.2 UML为模式提供了语言
1.3 反模式从负面学习
1.3.1 一些著名的反模式
1.3.2 实际中的反模式
1.3.3 反模式资源
1.4 反模式的思想并不是全新的
1.4.1 从业界学到的教训
1.4.2 检测工作
1.5 为什么写这本书
1.4.3 重构反模式
1.5.1 本书方法
1.5.2 本书工具
1.5.3 本书组织结构
1.5.4 本书读者对象
1.6 前瞻
第2章 状况之苦
2.1 反模式滋生的土壤
2.1.1 分层的好处
2.1.2 分层也会对我们不利
2.2 Internet技术
2.2.1 Internet拓扑结构会影响我们的应用
2.2.2 企业层可以增加安全,也会加大开销
2.2.3 标准提供了Internet支持,同时增加了层
2.2.4 TCP和IP提供底层通信
2.2.6 HTML和XML
2.2.5 HTTP提供应用级传输
2.2.7 小反模式:Web页面上有太多元素
2.3 对象技术和反模式
2.3.1 封装有助于隔离修改
2.3.2 继承支持共同行为的打包
2.3.3 多态支持灵活的重用
2.3.4 小反模式:过度分层
2.3.5 Java的舞台
2.4 Java技术解决反模式
2.5 瀑布的主要问题
2.5.1 迭代方法
2.5.2 小反模式:不完整的过程转换
2.5.3 编程新视野:极限编程
2.6 状况之苦速览
2.7 本章介绍的反模式
3.1 孤注一掷
3.1.1 早期的反模式:神奇按钮
第二部分 服务器端Java反模式
第3章 servlet之苦
3.1.2 利用模型-视图-控制器模式构建
3.1.3 未能分离模型和视图
3.1.4 分出模型
3.2 反模式:神奇servlet
3.2.1 可以使用servlet作为模型吗
3.2.2 落入神奇servlet陷阱
3.2.3 导致神奇servlet的原因
3.3 解决方案:使用命令重构
3.3.1 分出模型
3.3.2 用命令对象包装模型
3.3.3 分离模型逻辑
3.3.4 分离返回视图
3.3.5 使用JSP建立返回视图
3.5 本章介绍的反模式
3.4 小结
第4章 JSP之苦
4.1 还没有结束
4.1.1 找出危险信号
4.2 反模式:整块JSP
4.2.1 这个程序未能做到模型-视图分离
4.2.2 解决方案:重构为模型-视图-控制器
4.3 反模式:复合JSP
4.3.1 该不该结合多个JSP
4.3.2 结合了两个界面的例子
4.3.3 解决方案:分解JSP
4.3.4 在控制器servlet中做判定
4.4 小反模式:过粗和过细的命令
4.4.2 解决方案:重构为合适的粒度
4.4.1 一组中有太多的命令
4.4.3 有关粒度的提示
4.5 小反模式:胖命令
4.6 反模式回顾
4.7 本章介绍的反模式
第5章 缓存管理之苦
5.1 我们需要缓存!
5.2 反模式:缺少缓存
5.2.1 没有缓存的糟糕BBS
5.2.2 构建ShowBoard的模型、视图和控制器
5.2.3 构建ShowThread的模型、视图和控制器
5.2.4 构建AddPost的模型、视图和控制器
5.2.5 性能问题
5.3 解决方案:缓存
5.3.2 解决方案2:缓存命令
5.3.1 解决方案1:使用一个硬件缓存
5.3.3 为BBS增加缓存
5.3.4 对缓存命令的改进
5.4 与缓存有关的小反模式
5.4.1 对静态缓存的并发访问
5.4.2 不断膨胀的缓存
5.5 反模式:同步读/写瓶颈
5.5.1 读者之间的冲突会降低性能
5.5.2 读/写锁允许正确地共享访问
5.6 消除无缓存反模式
5.7 本章介绍的反模式
第6章 内存之苦
6.1 了解内存泄漏和反模式
6.1.1 管理内存
6.1.2 理解垃圾回收
6.1.3 引用计数
6.1.4 可达对象
6.2 C++换Java
6.2.1 导致Java内存泄漏的情况
6.2.2 找出Java的内存泄漏
6.3 反模式:流失监听者泄漏
6.3.1 分析一些危险的做法
6.3.2 解决方案1:显式地删除监听者
6.3.3 解决方案2:缩短锚的生命周期
6.3.4 解决方案3:弱化引用
6.3.5 引用对象可以简化内存管理
6.4 反模式:泄漏集合
6.4.1 由于缓存和会话状态导致的问题
6.4.2 解决方案1:搜索常见的警告信号
6.4.3 解决方案2:让增加/删除调用匹配
6.4.4 解决方案3:使用软引用完成缓存
6.5.1 确信存在泄漏
6.5 解决内存泄漏
6.4.5 解决方案4:使用带弱引用的集合
6.4.6 解决方案5:使用finally
6.5.2 确定泄漏应当得到修正
6.5.3 隔离问题
6.5.4 确定根源,修正问题
6.5.5 防止将来出现同样的问题
6.6 小反模式:小肥猪
6.6.1 串管理
6.6.2 集合
6.6.3 继承链
6.7 小结
6.8 本章介绍的反模式
第7章 连接和耦合之苦
7.1 建立连接
7.2 反模式:连接抖动
7.2.1 对每个访问都创建和终止连接
7.2.2 解决方案:利用池来重用连接
7.2.3 重构BBS例子,增加入池连接
7.2.4 使用getPooledConnection
7.2.5 使用J2EE连接器体系结构
7.3 反模式:分离清洁器
7.3.1 异常可能导致分离清洁器
7.3.2 解决方案:在finally中让连接与清理配对
7.4 反模式:捆绑的连接
7.4.1 通信缓冲区
7.4.2 过早绑定
7.4.3 解决方案1:利用XML消息解耦合
7.4.4 解决方案2:利用Web服务延迟绑定
7.5 关于XML误用的小反模式
7.5.1 XML金榔头
7.5.2 XML转换之苦
7.6 小反模式:严格XML
7.6.1 命名冲突
7.6.2 严格构造
7.6.3 限制性的可变内容容器
7.6.4 XML版本问题
7.7 小结:苦连接变甜
7.8 本章介绍的反模式
第8章 bean之苦
8.1 Enterprise JavaBeans简要回顾
8.1.1 基于组件的分布式体系结构
8.1.2 EJB的类型
8.2 利用EJB实现的糟糕BBS
8.2.1 EJB应用中的元素
8.2.2 构建远程接口
8.2.3 创建home接口
8.2.4 实现bean类
8.2.5 定义主键
8.2.6 创建部署描述文件
8.2.7 使用模型
8.3 反模式:往返通信
8.3.1 计算分布式部署的开销
8.3.2 会话太多的接口
8.3.3 解决方案:利用外观组合往返通信
8.3.4 往返通信的根源
8.3.5 利用外观重构BBS
8.4 反模式:张冠李戴
8.4.1 小反模式:bean托管连接
8.4.2 解决方案:视图、映射器、bean托管连接
8.4.3 小反模式:实体bean只是完成一些轻量级的功能
8.4.6 麻烦的可滚动列表
8.4.5 小反模式:实体bean仅用于写而不读
8.4.4 小反模式:实体bean仅用于读
8.4.7 总解决方案:选择合适的bean完成合适的任务
8.5 小反模式:一切都是EJB
8.6 EJB和缓存
8.6.1 利用外观实现缓存
8.7 消除苦bean
8.8 本章介绍的反模式
第三部分全景图
第9章 卫生之苦
9.1 为什么要研究编程卫生
9.1.1 极限编程需要好的编程卫生
9.1.2 编码标准可以避免反模式
9.2 小反模式:不可达的代码
9.2.1 名字匹配
9.2.2 命名标准
9.2.3 大括号和缩进
9.2.4 注释
9.2.5 制表符和空格
9.2.6 编辑器
9.3 小反模式:组织和可见性
9.4 小反模式:结构
9.4.1 基本面向对象理论
9.4.2 低级设计因素
9.4.3 异常
9.5 小反模式:泄漏和性能
9.6 测试的约定
9.7 建立一个好的风格指南
9.7.1 是买、是借还是偷?
9.7.2 Contextual公司的一个示例风格指南
9.8 编码标准小结
10.1 保证性能的好拓扑
第10章 可扩展性之苦
10.1. 1同构组中的硬件分层
10.1. 2其他拓扑变种
10.2 反模式:事后再考虑性能
10.2.1 开发时不做性能规划
10.2.2 一些真实世界的例子
10.2.3 解决方案:做性能规划!
10.3 反模式:往返通信
10.3.1 解决方案:缓存和外观
10.4 反模式:不好的负载管理
10.4.1 解决方案:工作负载管理
10.4.2 真正的负载平衡
10.5 反模式:混乱的会话管理
10.5.1 解决方案1:利用会话亲缘性分派
10.5.2 解决方案2:使用一个分布式状态管理服务
10.6 反模式:抖动调优
10.5.3 使用定制会话bean解决方案
10.5.4 使用定制实体bean解决方案
10.6.1 解决方案:使用合理的性能改进方法
10.7 驯服性能野兽
10.8 本章介绍的反模式
第11章 圆满的告别
11.1 反模式可以在很多层次上提供帮助
11.1.1 反模式促进职业发展
11.1.2 了解反模式可以改善程序
11.1.3 了解反模式可以使你成为一个更好的程序员
11.2 在过程中集成反模式
11.3 更上一层楼
附录A 反模式参照表
参考文献
· · · · · · (
收起)
0 有用 Terry|特特 2009-07-28 11:48:03
不见得十分系统,应该算是anti-pattern的实践版
0 有用 Cowoo 2007-09-17 14:58:29
经验之谈
0 有用 蒙古豆腐 2011-02-18 18:00:07
可能和翻译有关,是一本 讲了一堆蛋疼知识,然后引用一些奇怪的故事,让你发困的书,最大的优点就是薄
0 有用 叶小桃 2011-07-16 23:47:57
周围很多人都在严格按照上面列举的反例进行编程。每个Java程序员都应该看一看。
0 有用 叶小桃 2011-07-16 23:47:57
周围很多人都在严格按照上面列举的反例进行编程。每个Java程序员都应该看一看。
0 有用 蒙古豆腐 2011-02-18 18:00:07
可能和翻译有关,是一本 讲了一堆蛋疼知识,然后引用一些奇怪的故事,让你发困的书,最大的优点就是薄
0 有用 Terry|特特 2009-07-28 11:48:03
不见得十分系统,应该算是anti-pattern的实践版
0 有用 Cowoo 2007-09-17 14:58:29
经验之谈