摘要: 拉模式.Observer实现了一种间接关系.可以向各种对象注册观察者.可以有效地管理依赖关系.拉模式实现简单,且Subject和Observer可以成为类库中的可重用元素.当被观察对象比较复杂,并且Observer需要一个提示,那么使用推模式.该模式的目的:增加新的Observer对象时,无需更改被观察的对象.被观察对象保持了封闭.OCP.模式的形成.朝着正在编写的代码的需要方向去演化代码.在重构代码以解决耦合性,简单性,以及表达性的问题时.代码可能已经接近于一个特定的模式了.重命名类和变量的名称,并修改结构以符合更正规的模式形式,这样,代码回归为模式.优先考虑测试,有助于将设计中的耦合减至最 阅读全文
posted @ 2013-12-12 19:23 robynhan 阅读(221) 评论(0) 推荐(0) 编辑
摘要: [Agile Software Development(Principles,Patterns,and Pracitices)] 阅读全文
posted @ 2013-12-12 17:13 robynhan 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 使用new的Code都违反了DIP.但是,依赖于稳定的具体类,是无害的.例如string.另一方面,对于正在开发中的APP,很多具体类是易变的.此时应该依赖于抽象接口.Factory模式:只依赖于抽象接口就能创建出具体对象的实例.对Test Fixture使用工厂编写UT时,希望把一个模块和它使用的模块隔离起来,从而单独测试该模块的行为.工厂的使用遵循DIP,对于系统中所有的易变类都要使用工厂.但是,工厂是复杂的,为了创建一个新类,需要1个表示该类的接口和1个其工厂的接口.实现这两个接口的具体类.使得高层决策模块在创建类的实例时无需依赖这些类的具体实现.使得一组类的完全不同系列的实现间进行切换 阅读全文
posted @ 2013-12-12 16:40 robynhan 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 包的设计.通过把类组织成package,可以在更高层次的抽象上理解设计.通过包来管理软件的开发和发布.由于类之间的相互依赖关系,包之间会产生依赖关系.包的依赖关系展示了APP的高层组织结构.粒度:内聚性."自顶向上"的将类划分到包中Reuse-Release Equivalence Priciple(REP).重用的粒度就是发布的粒度.重用类库时,我们要求author维护Code,同时在接口和功能改变时通知我们(同时我们有拒绝改变的权利).重用性必须基于包,可重用的包必须包含可重用的类.包中的所有类应该对于同一类用户来说都是可重用的.Common-Reuse Princip 阅读全文
posted @ 2013-12-12 15:10 robynhan 阅读(787) 评论(0) 推荐(0) 编辑