随笔分类 -  OO

摘要:6. 提取并重写调用和第四条类似, 只不过封装的是变量的访问.原始代码:[代码]重构:[代码] 我们把测试方法内部依赖的对象叫'问题对象'. 如果问题对象上只有唯一一个方法的话, 提取并重写调用比较容易, 但如果同一对象上有多个问题方法的话, 我们可能就需要下面的手法了--提取并重写获取方法.7. 提取并重写获取方法原始代码:[代码]重构:[代码]类似抽象工厂, 可以把每一个问题方法看做一个产品类... 阅读全文
posted @ 2009-06-23 19:02 Tyrael 阅读(225) 评论(0) 推荐(0)
摘要:2年前在实习的时候买了这本书,当时就随便翻了翻,也没看懂太多; 最近比较轻松,碰巧比较关注代码质量,一口气就把这书读完了。 这本书虽然关注点比较窄(重构代码,解开依赖,方便测试),但在这方面就众多情形提出了各自的解决方案,不得不说作者富有相当的代码洞察能力和实践经验。总的来说是本好书。下面是我自己的一点体会:PⅠ,概念和原则1. 测试有关测试代码并不难写, 它毕竟也只是代码, 胡乱一通... 阅读全文
posted @ 2009-06-23 15:05 Tyrael 阅读(371) 评论(0) 推荐(0)
摘要:Part Ⅰ-Universal principles in beautiful architectures:- One fact in one placeDuplication leads to error, so it should be avoided. Each fact must be a single, nondecomposable unit, and each fact... 阅读全文
posted @ 2009-06-08 18:50 Tyrael 阅读(219) 评论(0) 推荐(0)
摘要:1. Problem: 软件设计的变化可以归于2类: 1.1, 改变某方法行为. 1.2, 增加新方法(不改变已有类).2. Solution: @1.1,OO中的继承和多态, DP中众多模式都是解决此问题, virtual method, 通过新增类来override出新行为. @1.2, DP中的Visitor pattern提供了一个比较trick的方案. Visitor pattern本质... 阅读全文
posted @ 2009-06-02 14:24 Tyrael 阅读(115) 评论(0) 推荐(0)
摘要:1. 单一职责原则(SRP), 高内聚.2. 开放-封闭原则(OC),扩展开放(对于系统),修改关闭(对于成型模块). - 扩展开放:某模块的功能是可扩展的,则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。 - 修改关闭:某模块被其他模块调用,如果该模块的源代码不允许修改,则该模块修改关闭的。软件系统的功能上的稳定性,持续性要求是修改关闭的。3. 里氏代换原则(LSP). 基... 阅读全文
posted @ 2009-06-02 13:48 Tyrael 阅读(3355) 评论(0) 推荐(0)
摘要:一篇介绍抽象类与接口区别的文章:http://www.cnblogs.com/clongge/articles/1238998.html------------------------------------------------------------------精辟之处:1. (Principia) 抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能.2. (E.g) 飞机会飞... 阅读全文
posted @ 2009-06-02 13:43 Tyrael 阅读(181) 评论(0) 推荐(0)