面向对象设计模式大纲

面向对象设计模式大纲
    马上咨询

    张逸  现為(wèi)深圳大眼科(kē)技有(yǒu)限公司的首席架构师,联合创始人  

    先后就职于中兴通讯、惠普GDCC、中软國(guó)际、ThoughtWorks等大型中外企业,任职角色為(wèi)高级软件工程师,架构师,技术总监,首席咨询师。精通包括C#、Java、Ruby、Scala、Python、JavaScript等多(duō)种语言,熟练掌握面向对象思想、领域驱动设计、函数式语言、架构、大数据分(fēn)析、敏捷与过程改进,并致力于大型软件企业的面向服務(wù)系统架构设计以及互联网Web系统架构设计。在ThoughtWorks期间,作為(wèi)一名咨询师,主要為(wèi)客户提供组织的敏捷转型、过程改进、系统架构监理(lǐ)、领域设计、代码质量提升等咨询工作。目前,作為(wèi)公司产品的架构师,致力于商(shāng)业智能(néng)产品与大数据分(fēn)析平台的开发与架构设计。

    课程⽬标

    • 正确理(lǐ)解⾯向对象的设计思想与设计原则,剖析设计模式的本质与思想⽅法
    • 借助真实案例与最佳实践,帮助學(xué)员提⾼设计能(néng)⼒,从⽽改进开发效率和设计质量
    • 利⽤领域建模、职责驱动、扩展式设计以及代码重构,提⾼软件设计质量,实现卓越软件设计

    培训计划        

    议题⼀:卓越的软件设计思想
    软件设计原则与模式
    • 组合⽅法模式
    • DRY原则
    • 引⼊函数式思想去除重复

    案例分(fēn)析:

    • 代码阅读:通过运⽤组合⽅法模式思想对代码进⾏重构,进⽽演化為(wèi)Template Method模式去除重复代码
    • 邮件服務(wù)器:分(fēn)析邮件服務(wù)器代码暴露的问题,在可(kě)重⽤性、代码可(kě)维护性、可(kě)扩展性等诸多(duō)⽅⾯着⼿,剖析代码坏味道。
    ⾯向对象的设计要素
    • 合理(lǐ)封装的要点
    • 迪⽶特法则
    • 继承与委派的區(qū)别
    • 关注点分(fēn)离原则
    • 多(duō)态与抽象

    案例分(fēn)析:

    • 报表系统之参数处理(lǐ):了解封装的本质,明确职责的分(fēn)配以及智能(néng)对象的意义,理(lǐ)解“信息专家”模式。
    • 電(diàn)⼦商(shāng)務(wù)系统之订单处理(lǐ):对⾏為(wèi)的封装,职责的委派⽽⾮继承的⽅式,进⽽重构到Command模式。


    议题⼆:合理(lǐ)的职责分(fēn)配是良好设计的基础
    职责驱动设计
    • 职责的层次:包括职责层次的识别、职责层次与软件架构层次之间的关系、职责与概念、规约与实现
    • 对象的⾓⾊:⾓⾊、职责与协作是三位⼀體(tǐ)的关系,⾓⾊是发起职责的对象,职责则应该是对象之间的协作
    • 模块级的职责分(fēn)配:如何根据职责对模块进⾏分(fēn)解,了解⾼内聚、松耦合原则。

    案例分(fēn)析:

    • 对邮件服務(wù)器进⾏分(fēn)析,通过分(fēn)辨职责层次,来改善设计。并提出需求变更,从⽽引⼊对观察者模式、策略模式、简单⼯⼚模式、调停者模式与职责链模式的对⽐与分(fēn)析;
    • EISaaS的模块划分(fēn);
    职责分(fēn)配遵循的原则与模式
    • 分(fēn)析单⼀职责原则:分(fēn)析该原则的核⼼思想,关注对象的变化点
    • 专家模式:专家模式的核⼼思想是信息的持有(yǒu)者是操作该信息的专家
    • ⾃治对象:分(fēn)析了⾃治对象的特征,分(fēn)别包括:最⼩完备,稳定空间,⾃我履⾏与独⽴进化

    案例分(fēn)析:

    • 设备状态的迁移:利⽤“⾃治对象”思想逐步引⼊State模式,并结
    • 合实际需求分(fēn)析标准State模式的问题,从⽽对该模式进⾏改进


    议题三:应对需求的变化,设计可(kě)扩展的软件
    如何应对需求的变化
    • 抽象的关键在于寻找多(duō)个对象(或⾏為(wèi))具有(yǒu)的共同特征,并对特性进⾏泛化
    • 函数式⾮凡的抽象能(néng)⼒
    • 识别变化点,对变化进⾏封装
    扩展式设计
    • 扩展式设计的过程

    案例分(fēn)析:

    • 数据准备框架
    • 保单问卷调查:讲解如何从坏设计逐步重构到Visitor模式;
    分(fēn)层架构的思考

    分(fēn)析经典的三层架构模式与DDD推荐的四层架构模式,结合项⽬实践与依赖倒置原则,遵循⾯向对象设计原则分(fēn)析分(fēn)层架构模式。


    议题四:设计模式的本质
    设计模式的境界
    • 初學(xué)者:拔剑四顾⼼茫然,不知道该如何运⽤设计模式
    • 熟练者:过尤不及,為(wèi)模式⽽模式,常常导致设计过度
    • 精通者:⽆招胜有(yǒu)招,掌握了设计模式的本质,能(néng)够恰如其分(fēn)地运⽤设计模式
    设计的常见问题
    • 理(lǐ)论与设计⽆法有(yǒu)效结合
    • 过度运⽤设计模式
    • 急于编码,没有(yǒu)有(yǒu)效的设计
    设计模式的本质
    • 合理(lǐ)的职责分(fēn)配是基础
    • 封装并抽象变化是核⼼
    • 合理(lǐ)运⽤⾯向对象设计思想
    • 合理(lǐ)运⽤⾯向对象设计原则

    案例分(fēn)析: JUnit框架

    通过全⾯剖析JUnit测试框架,了解⼤师的设计艺术,展现JUnit是如何保证框架的简单、可(kě)扩展、可(kě)重⽤。内容包括:

    • JUnit的组件结构
    • JUnit的Test Case设计
    • 如何⽀持Test Result显⽰的扩展
    • JUnit中如何通过复杂的设计来简化⽤户的使⽤