软件架构设计模式实践与应用
                                
                                    作者: 来源: 文字大小:[大][中][小]
                                第一单元:设计模式与面向对象的设计思想
一、面向对象与设计模式
1.面向对象与设计模式的联系
2.面向对象的设计原则:
开闭原则、依赖倒置原则、Liskov替换原则、单一职责原则、接口分离原则、组合复用原则、所知最少原则
案例分析:会议管理系统等、API函数的启示等
3.用GRASP模式指导面向对象的设计
4.信息专家、创建者、高内聚、低耦合、控制者、多态、间接、纯虚构、保护变化
案例分析:
信息专家、控制者、低耦合、间接模式案例分析
5.应用GRASP模式精化架构设计案例分析
二、UML中的常见疑难问题辨析
1.类设计
1)UML中关系的辨析:
2)依赖关系、关联关系辨析;聚合,组合辨析。
3)类设计中的常见问题:
一些常见但易混淆的类关系图;熟悉类的自关联形式;使用关联类;一些易混淆的重数表示方法;建模为对象与建模为属性 / 建模为方法与建模为对象的辨析。
2.交互图中的常见问题:
1)循环、条件、创建、并行的表示。
2)控制类的地位;边界、控制、实体类的交互规则。
3.其它辨析
1)扩展基类与覆盖基类等;自关联、关联多重性、关联角色名辨析。
2)消除多重继承的常用手段。
第二单元:设计模式详解
一、设计模式介绍
1.从几个案例说起
文件解析器:
1)文件解析器的初始设计。
2)初始设计遭遇的问题。
3)用模式来思考。
	演示控制系统:
	1)一个不错的演示控制系统。
	2)功能渐强,结构渐乱。
	3)用统一的方式处理问题。
	多窗口的系统:
	1)直观的想法。
	2)松耦合的实现。
	薪酬系统:
	1)虚假的策略。
	2)设计人员的功底; 抽象的重要性。
	编辑器。
	1)模式的困惑。
	2)一切从实际出发。
	2.设计模式分类及特点
	1)为何需要设计模式;设计模式在软件设计中所处的层级及阶段。
	2)设计模式的特点。
	3)设计模式的几种分类。
	4)设计模式的意图及考虑问题的基本思想。
	5)设计模式的优点及不足。
	二、组织接口型模式:
	1.接口的意义。
	2.适配器模式。Adapter
	1)适配器模式介绍。
	2)容易被忽略的情况:关于接口的修改。
	例:文件解析器系统的接口设计。
	3.适配器总结。
	4.外观模式。
	1)令人望而生畏的API函数。
	2)外观模式的作用。
	3)容易被忽略的外观。
	例:文件解析器系统的外观设计。
	5.外观模式与适配器的辨析。
	6.中介者模式
	1)中介者模式的使用场景。
	2)中介者模式在架构中的重要地位。
	3)中介者模式与控制者。
	三、创建型模式
	1.单例模式。
	1)单例模式的意义。
	2)多线程中的问题。
	例:引入单例模式。
	2.工厂模式
	1)工厂模式的使用场景。
	2)工厂模式与反射。
	例:引入工厂模式。
	3.抽象工厂模式
	1)创建不同对象的多个系列产品。
	2)工厂模式与抽象工厂模式的区别。
	例:引入抽象工厂模式。
	4.构造者模式
	1)构造者模式的应用场景。
	2)构造者模式中的控制者。
	5.原型模式
	1)作为工厂的原型
	2)利用克隆进行原型
	3)
	四、扩展型模式
	1.功能与逻辑的关系
	1)功能模块的设计要点。
	2)逻辑模块的设计要点。
	3)系统稳定及可扩展的秘诀。
	2.模板方法模式
	1)部分的多态。
	2)模板方法模式的使用场合。
	3)模板方法模式与IOC。
	例:文件解析器中的模板方法模式。
	3.策略模式
	1)继承与组合的辨析。
	2)多态的经典使用。
	3)无处不在的策略模式。
	例:运输系统;在多窗口系统中引入策略模式。
	4.桥接模式
	1)从“类爆炸”说起。
	2)复杂多对多的处理。
	3)仅针对接口编程是不够的。
	4)桥接模式的要点:抽象类行为的具体实现中有重复的方法。
	5)从桥接模式到面向对象的误区。
	例:在文件解析器中引入桥接模式。
	5.状态模式
	1)状态模式的本质:类状态机。
	2)状态模式的前提条件:经常发生改变的是状态(业务流程),而非对应的处理。
	3)状态模式使用。
	4)状态模式与表驱动法。
	5)
	6.策略、桥接、状态、模板方法模式的辨析。
	7.装饰模式
	1)装饰模式的使用场合。
	2)装饰模式的要点。
	3)Java中的装饰模式。
	例:装饰模式在打印中的使用。
	8.代理模式
	1)代理模式的使用场合。
	2)代理模式的要点。
	3)代理模式与AOP
	9.访问者模式
	1)访问者模式的使用场合。
	2)双重分发机制。
	3)与桥接模式的比较。
	例:在演示控制系统中引入桥接模式。
	10.责任链模式
	1)责任链模式的使用场合。
	2)责任链模式的要点。
	3)消息路由与责任链模式。
	11.组合模式
	1)组合模式的使用场合。
	2)组合模式的使用要点。
	例:组合模式在表单统计中的使用。
	
	五、操作型模式
	1.命令模式
	1)命令模式的特点、优点及缺点。
	2)命令模式的典型使用场合。
	例:在客户端与服务器端传递命令。
	例:在元搜索系统中使用命令模式。
	2.观察者模式
	1)观察者模式的使用场景。
	2)观察者模式与MVC。
	3)观察者模式使用中变体。
	例:用观察者模式解决多窗口系统的联动问题。
	3.享元模式
	1)享元模式的使用场景。
	2)内存管理:存根(stub)与享元模式。
	4.备忘录模式
	1)备忘录的使用场景。
	5.迭代器模式
	1)Java、stl、c#中的迭代器实例。
	例:构造统一的树状结构迭代。
	6.解析器模式:
	1)解析器模式的使用场合。
	第三单元:设计模式本质论
	一、关于功能与逻辑的分离。
	1.隔离关注面。
	2.软件架构设计的思考。
	3.单向依赖与双向依赖。
	4.强依赖与弱依赖。
	5.面向对象的误会。
	6.领域模型。
	7.DIP、DI和IOC。
	8.分离、分离,还是分离!
	9.桥接、策略、状态、访问者、模板方法模式。
	二、关于间接。
	1.间接在软件设计中的地位。
	2.变形记。
	3.接口在间接中的地位。
	4.掌握好度。
	5.间接、间接、还是间接!
	6.实际项目运用中的折衷。
	三、关于动态对象。
	1.一个有争议的建模例子。
	2.你真正理解什么是对象吗?
	3.善于构建动态对象。
	4.其它的小对象。
	四、关于常用模式的组合。
	1.用中介者模式作为中控。
	2.用桥接/ 策略模式作为情况分支处理。
	3.用状态模式进行事件分发。
	4.用命令模式处理复杂的操作。
	5.用访问者模式、装饰模式、组合模式统一流程。
	6.用工厂/ 抽象工厂模式进行创建组配。
	7.用单例模式简化传输,构建无状态对象。
	8.用模板方法模式处理小流程。
	9.用观察者模式实现联动和消息相应。
	10.用状态模式实现控制中枢。
	五、关于模式的误用。
	1.以业务为边界。
	2.不用模式的正当理由。
	3.不可避免的类爆炸。
	4.子类复子类,子类何其多。
	5.理解模式的本质,而非背诵形式。
	6.高手的选择。
	第五单元:设计模式综合练习
	一、设计模式综案例。
	1.网络数据采集分析系统。
	2.基于网络元搜索的系统。
	3.企业薪酬管理系统。
	4.会议管理系统。
	5.文件解析系统。
	6.图像处理系统。
	7.Devs文件编辑器系统。