设计模式学习(六):重构与模式,推荐书籍(完)
备注:
1. 模式常常组合使用,共同解决问题。
2. 模式是特定场景下优雅的解决方案,因此场景很关键。在软件设计中,特定的场景可能是显而易见的,可能是隐而不现的,有时甚至是设计者有意创造的。因此使用模式时,对问题的分析至关重要。
3. 模式的使用是有先后之分的。
4. DP书中所给的结构图仅仅是模式可能的实现方式之一,但不是唯一。实现一个模式往往有多种途径。
5. 模式本身是比较复杂的。纯粹的为了模式而模式,并不会改善设计,相反会引入不必要的复杂性。之所以使用模式,是因为它提供了一种优雅的解决方案
6. 有些模式,比如行为型的模式等,常常在设计初期就引入,但是更多的模式则不宜过早的引入。“Refactoring to Patterns”是目前普遍公认的最好的使用设计模式的方法。
7. 模式和语言无关
8. 使用模式不难,用好模式难.唯一的建议: 多编程。
重构与模式
很多模式并非作为主模式被引入系统设计的,往往是在系统不断进化的过程中,根据需求而引入。模式的引入过程就是系统的一个组合重构过程。进化的系统需要持续重构,因此重构就成了使用模式的一个很好的途径。
重构的目标:消除重复代码;消除冗余代码;简化代码逻辑。本质上,重构就是为了提高代码的可读性和可维护性等。
重构往往需要测试驱动开发的支持。没有测试代码重构很难进行,测试代码是保证重构不破坏代码原有行为的必要条件。
重构过程不宜采取过大的步骤。采取尽可能小的重构步骤,在不破坏代码行为的前提下,尽量使重构的代码在可编译状态下进行代码的增删和替换。小步骤的重构往往就是最快的重构方式。
模式导向的重构是把重构和模式使用结合在一起的一个途径。
参考书籍
设计模式 1995
设计模式精解(2nd) 2006
敏捷软件开发 2003
Refactoringto Patterns(中文: 重构与模式) 2006
HeadFirst Design Patterns ElisabethFreeman, Eric Freeman 2007
推荐书籍:
测试驱动开发(TDD) Kent Beck
重构 Martin Fowler
Patternsof EnterpriseApplication Architecture Martin Fowler
Extreme Programming Explained Kent Beck
Object-orientedSoftware Construction Bertrand Meyer
UMLDistilled(有中文版) Martin Fowler
大部分写于:2007-02-05~06
完成于2007-03-30
修改于:2009-09-05
---------------------------------------------------
兄弟的公司:立即购--手机购物,诚信网购
兄弟的公司:立即团
欢迎转载,请注明作者和出处
转载于:https://www.cnblogs.com/zhenjing/archive/2010/12/15/refactoring_2_patterns.html
设计模式学习(六):重构与模式,推荐书籍(完)相关推荐
- 设计模式学习笔记——迭代器(Iterator)模式
设计模式学习笔记--迭代器(Iterator)模式 @(设计模式)[设计模式, 迭代器模式, iterator, 迭代器] 设计模式学习笔记迭代器Iterator模式 基本介绍 迭代器案例 类图 实现 ...
- 设计模式学习系列6 原型模式(prototype)
原型模式(prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.允许一个对象再创建另外一个新对象的时候根本无需知道任何创建细节,只需要请求圆形对象的copy函数皆可. 1 ...
- 设计模式学习笔记——解释器(Interpreter)模式
设计模式学习笔记--解释器(Interpreter)模式 @(设计模式)[设计模式, 解释器模式, Interpreter] 设计模式学习笔记解释器Interpreter模式 基本介绍 解释器案例 类 ...
- 设计模式学习笔记——命令(Command)模式
设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...
- 设计模式学习笔记——代理(Proxy)模式
设计模式学习笔记--代理(Proxy)模式 @(设计模式)[设计模式, 代理模式, proxy] 设计模式学习笔记代理Proxy模式 基本介绍 代理案例 类图 实现代码 Printable接口 Pri ...
- 设计模式学习笔记——状态(State)模式框架
设计模式学习笔记--状态(State)模式框架 @(设计模式)[设计模式, 状态模式, State] 设计模式学习笔记状态State模式框架 基本介绍 状态案例 类图 实现代码 State接口 Day ...
- 设计模式学习笔记——备忘录(Memento)模式
设计模式学习笔记--备忘录(Memento)模式 @(设计模式)[设计模式, 备忘录模式, memento] 设计模式学习笔记备忘录Memento模式 基本介绍 备忘录案例 类图 实现代码 Memen ...
- 设计模式学习笔记——观察者(Observer)模式
设计模式学习笔记--观察者(Observer)模式 @(设计模式)[设计模式, 观察者模式, Observer] 设计模式学习笔记观察者Observer模式 基本介绍 观察者案例 类图 实现代码 Ob ...
- 设计模式学习笔记——外观(Facade)模式
设计模式学习笔记--外观(Facade)模式 @(设计模式)[设计模式, 外观模式, facade] 设计模式学习笔记外观Facade模式 基本介绍 外观案例 类图 实现代码 Database类 ma ...
- 设计模式学习笔记——访问者(Visitor)模式
设计模式学习笔记--访问者(Visitor)模式 @(设计模式)[设计模式, 访问者模式, visitor] 设计模式学习笔记访问者Visitor模式 基本介绍 访问者案例 类图 实现代码 Visit ...
最新文章
- java查询结果自定义显示_JPA自定义对象接收查询结果集操作
- 保护数据安全的三种武器
- linux中firefox替换,Ubuntu更换Firefox版本的方法
- XV6陷入,中断和驱动程序
- 零基础适合学python吗-学Python需要什么基础知识?零基础可以学Python吗?
- 20180925-6 四则运算试题生成
- 【路面分类】基于matlab灰度共生矩阵图形纹理检测+SVM路面状况分类【含Matlab源码 1519期】
- kali linux捉肉鸡教程,使用Kali中的Metasploit生成木马控制Windows系统
- 继电保护计算机化,浅谈继电保护的未来发展趋势
- 手机把网页保存为html,怎么保存整个网页
- 计算机谢夫,切贝谢夫
- ps gif动图怎么做,教你一招更简单
- Quartz 数据库表
- pythoninterpreter_java-Jython :: PythonInterpreter可以使用哪些模块...
- 计算机无法获取正常的ip地址,无法获取ip地址,教您电脑无法获取ip地址的解决方法...
- C# winform Qrcoder二维码
- AVCaptureDevice中通过调用VideoZoomFactor方法调整焦距实现拉近拉远镜头进行拍照录制视频(动画缩放画面,不闪屏)
- 【Python】python脚本实例
- Debug的心路历程
- 计算机视觉 目标分割