2008年7月16日

摘要: 意图(Intent) 为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 ——《设计模... 阅读全文
posted @ 2008-07-16 11:08 Cameo 阅读(1340) 评论(1) 推荐(0) 编辑

2008年7月4日

摘要: 动机(Motivation) 上述描述的问题根源在于我们“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。 如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导... 阅读全文
posted @ 2008-07-04 13:38 Cameo 阅读(333) 评论(0) 推荐(0) 编辑

2008年7月1日

摘要: 面向对象有一个原则:接口最小化原则.(我们应该把我们对象里尽可能少的接口暴露给外界(一般只暴露业务业务接口)) |内部实现,和内部实现细节的接口不要暴露给客户. 面向对象和设计模式解决的是依懒问题. 动机(Motivation) 上述描述的问题根源在于:客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代... 阅读全文
posted @ 2008-07-01 18:42 Cameo 阅读(345) 评论(0) 推荐(0) 编辑

2008年6月19日

摘要: 抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 动机(Motivation) 思考上述问题的症结:事实上由于Tank类型的固有逻辑,使得Tank类型具有了两个变化的维度——一个变化的维度为“平台的变化”,一个变化的维度为“型号的变化”。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得Tank类型可以轻松地沿着“平台”和“型号”两个方向变化,而不引... 阅读全文
posted @ 2008-06-19 16:05 Cameo 阅读(313) 评论(0) 推荐(0) 编辑

2008年6月11日

摘要: 适配(转换)的概念无处不在…… 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。 动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 意图(... 阅读全文
posted @ 2008-06-11 11:05 Cameo 阅读(273) 评论(0) 推荐(0) 编辑

2008年6月10日

摘要: 依赖关系的倒置 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。[原因是抽象变化的频率(速率)慢,细节变化的频率快] – 抽象A直接依赖于实现细节b –抽象A依赖于抽象B,实现细节b依赖于抽象B 动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的... 阅读全文
posted @ 2008-06-10 11:28 Cameo 阅读(213) 评论(0) 推荐(0) 编辑

2008年6月8日

摘要: 从耦合关系谈起-耦合关系直接决定着软件面对变化时的行为[设计模式研究的是模块与模块之间的关系] – 模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改 – 模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变 一个原则:变化快的东西不要影响变化慢的东西。 接口是模块与模块之间连接的部分,是相对稳定的部分,如下图... 阅读全文
posted @ 2008-06-08 09:28 Cameo 阅读(228) 评论(0) 推荐(0) 编辑

2008年6月6日

摘要: 最优秀的面向对象就是设计模式,它解决的是一系列变化的问题[设计模式是封装一系列变化].[如果系统没有变化的地方或变化太激烈了,没有不变的地方.这样的情况就不要用设计模式了] Builder模式的缘起 • 假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。 • 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正…… 动机... 阅读全文
posted @ 2008-06-06 09:25 Cameo 阅读(218) 评论(0) 推荐(0) 编辑

2008年6月5日

摘要: 1. 书名:Microsoft .NET框架程序设计(修订版) 作者:Jeffrey Richter 译者:李建忠 出版日期:2003 年11月 出版社:清华大学出版社 推荐理由:框架设计是我看的第一本真正意义上的.NET书籍,之前看过很多,但都是工具类的。如果仅仅把.NET作为开发程序的工具,那些书就足够了。但是.NET绝不仅仅是个工具,它是一种思想、一个平台。要想深入学习,必须对其Frame... 阅读全文
posted @ 2008-06-05 10:34 Cameo 阅读(392) 评论(0) 推荐(0) 编辑

2008年6月4日

摘要: new的问题 常规的对象创建方法: // 创建一个Road 对象 Road road=new Road(); new的问题: – 实现依赖,不能应对“具体实例化类型”的变化。 解决思路: – 封装变化点—— 哪里变化,封装哪里 – 潜台词:如果没有变化,当然不需要额外的封装! 工厂模式的缘起 • 变化点在“对... 阅读全文
posted @ 2008-06-04 14:03 Cameo 阅读(318) 评论(0) 推荐(0) 编辑