读大师作品(案例),透视软件设计原则与本质
 

[分享概要]
面对纷繁复杂的软件系统,如何利用设计原则和模式提炼出解决方案?是从软件设计中寻找普遍存在的规律,还是透过设计看本质,利用本质的思想与原则来指导我们的设计?学习设计模式,如何才能做到既不流于内容空泛的理论堆砌,又不至于陷入细节的泥沼,一叶障目,以偏概全,失去把握设计脉络的大局观。本次课程通过阅读大师作品,解析JUnit和NHibernate等著名开源框架,以及.NET框架和JDK API,通过理论指导实践,通过实践抽象理论,对软件设计进行一次提炼与升华,是思想、原则与模式的大碰撞。七种武器迭出,助你劈荆斩棘,越过迷雾透晓设计本质。

课程大纲:

 

 

提纲
武器一:复用(Reusability)
代码的坏味道——解决方案蔓延
DRY原则
复用的方式——继承与组合
对象的粒度——迪米特法则
合理的封装
保持对象的高内聚
模式参考
- 简单工厂模式
- 原型模式
- 代理模式
- 门面模式
- 模板方法模式

阅读大师作品:
JUnit中对异常的重用
JUnit中的Assert断言
- ASP.NET MVC中的Copy Constructor
- 泛型工厂类

武器二: 扩展(Extensibility)

如何实现扩展
- 利用继承实现扩展
- 利用组合实现扩展
- 利用继承与组合实现扩展
- 利用抽象实现扩展

模式参考
- 装饰器模式
- 访问者模式
- 策略模式
- 命令模式
- 状态模式
- 职责链模式
- 观察者模式

阅读大师作品
- JDK中线程的运用
- .NET中对文件流的处理
武器三:分离(Separation)
职责分离
分离与抽象、依赖的解耦
分离体现的设计原则
- 单一职责原则
- 接口隔离原则
- 合成/聚合复用原则

对象的职责
- 如何定义职责
- 如何分解职责
- 如何抽象职责

分离的目标
- 分离变与不变
- 分离接口与实现
- 分离数据与行为

模式参考
- 工厂方法模式
- 建造者模式
- 桥接模式
- 迭代器模式
- MVC模式
- 分层架构模式

阅读大师作品
- JUnit中的职责委派
- JDK中对日志的处理
- RuleParser
武器四:变化(Change)
封装变化
- 封装创建的变化
- 封装结构的变化
- 封装行为的变化

应对变化应遵循的原则
- 开放封闭原则
- 依赖倒置原则

解除具体依赖
- 配置文件与反射
- 表驱动法
- 依赖注入
- 惯例优于配置

隔离变化
- 通过分离隔离变化
- 通过抽象隔离变化
- 利用依赖注入隔离变化

模式参考
- 工厂方法模式
- 抽象工厂模式
- 装饰器模式
- 策略模式
- 命令模式

阅读大师作品
- NHibernate中对延迟加载的支持
- JUnit中的TestListener
武器五:简约(Simplicity)
极限编程的KISS原则
根据场景驱动设计
避免设计过度

如何实现简约
- 封装有利于简约:职责的封装
- 继承有利于简约:职责的复用
- 多态有利于简约:职责的委派

简约的本质:简单+优雅
重构和精益求精
如何考量简约
- 可复用性
- 可扩展性
- 可测试性
- 可读性

模式参考
- 门面模式
- 调停者模式
- 适配器模式
- 入口模式

阅读大师作品
- JDBC中的DataSource
- NHibernate中的SessionFactory和Configuration
- LINQ中的DataContext
武器六:一致(Coherence)
软件结构的和谐与平衡
体现一致的方式
- 接口的一致——对于实现可替换
- 形式的一致——窥一斑而知全豹
- 调用的一致——客户可透明访问
- 解决方案的一致——团队合作的基石

惯例优于配置
Liskov替换原则
模式参考
- 适配器模式
- 合成模式
- 代理模式
- 门面模式
- 单例模式
- 空对象模式

阅读大师作品
- JUnit中的TestCase和TestSuit
- WCF的Endpoint
武器七:间接(Indirection)
以迂为直的设计思想
如何实现间接
- 职责的委派
- 职责的封装
- 职责的抽象

间接的目的
- 降低耦合
- 化繁为简
- 隐藏细节

模式参考
- 门面模式
- 代理模式
- 调停者模式
- 入口模式
- 资源库模式
- 分层架构模式

阅读大师作品
- .NET Remoting的客户端激活

 

  测试管理从测试入手建立质量保证体系  
  项目管理有效驱动项目开发、管理过程  
  架构设计一线架构师全真案例  
  团队管理卓越软件研发团队管理领导实践  
  产品创新洞察产品管理实践,挖掘用户体验  
  珠海站 邀请函下载  
建立高效软件测试团队 解决方案      下载
软件测试团队管理与培养
 

高端软件研发管理人才 解决方案      下载
具备最佳管理实践应用的国际化人才战略

 



销售服务热线 010-51661202-288
 
 
亚太软件研发团队管理年会
msup开放日(msup open day:mpd)专注于软件研发中心的快速成长,服务于软件开发团队的技能提升、软件工程的实际应用和软件品质的创新与超越。
强调人员、技术、流程和管理的有机结合,注重个体的技能提升与职业发展,研发团队的管理与协作。分享世界级软件研发团队最佳管理实践,这正是mpd的精髓所在!