4006-998-758
3000+课程任你选择
设计模式实战解析
研发学院 高级产品总监 开课时间:2022-02-15
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容

课程介绍


无数软件企业及其研发团队都面临着,大量初级程序开发人员低质量软件开发带来的严重问题,即使那些工作多年的高级程序员也存在着对提高软件设计质量认识不深的问题。正是由于以上的问题,造成许多公司对运行了多年的核心业务,运行维护成本越来越高,却不能更换、一直维护下去的恶性循环。如何通过培训,切实有效地提高员工设计开发水平,从而有效地改善软件设计质量,成为越来越多的软件企业迫切需要解决的问题。

本课程不仅在讲解高质量软件设计的理论知识,更关键是将这些知识投放到各个真实的设计场景中。在这些场景中,我们可以看到我们要面对的设计难题,通过对设计难题的深入剖析,寻找问题的根源,对症下药,从而制订出正确的设计方案。

掌握面向对象设计思想与基本原则,提高设计能力;

1、剖析设计模式的本质,跳出“为模式而模式”的设计方式,运用设计原则改善设计质量;

2、掌握场景驱动设计的方式,明确了解角色、职责与协作在设计中的作用;

3、梳理设计过程,结合真实案例,从业务建模入手,掌握基本的设计手法;

4、了解和掌握UML,运用包图、组件图、类图和时序图进行系统设计;

5、识别设计的坏味道,利用重构改善设计;

6、剖析经典的开源框架,分析Java/.NET系统的架构设计原则;

7、深入介绍分层架构、IoC、ORM等企业应用架构的核心模式;


课程特点


1.    将UML、OO、设计模式与重构有机结合;

2.    精炼设计原则,通过引入对职责与抽象的分析,提高设计能力;

3.    结合用例驱动与领域驱动,提出场景驱动设计,简化设计过程。


课程大纲


Day1


一、           代码与设计模式

1.    NASA告诉我们为什么要关注代码

2.    设计与代码实现之间的鸿沟

3.    我们应该更加关注哪一个软件质量特性

4.    设计模式背后的心法 -SOLID原则


二、           单一职责原则

1.    次时代租车服务终端 (ARCS)的初步设计

2.    用例 (UseCase)   的作用 – 划分边界及概览

3.    SRP的设计误区

4.    重构至 SRP 的方法1:提取类

5.    重构至 SRP 的方法2:Proxy模式

6.    过程性代码的 SRP

7.    违反直觉的真相:性能优化的步骤


三、           开放封闭原则

1.    代码中的接线板是什么?

2.    编程价值观 – 沟通,简单,灵活

3.    如何做到对扩展开放,对修改封闭

4.    次时代租车服务终端 (ARCS)的促销需求

5.    笨拙的促销实现

6.    如何不修改代码而改变它的行为

7.    最简单的 OCP实现 – 策略模式

8.    敏捷开发的精髓 – 只被第一颗子弹击中


四、           里氏替换原则

1.    什么才是好的继承关系

2.    子类为什么要能透明的替换基类

3.    次时代租车服务终端 (ARCS)的新需求 – 电动轿车费用计算

4.    白盒复用 还是 黑盒复用

5.    IS-A的精髓:针对属性还是针对行为

6.    契约式设计继承体系

7.    重构方法:提升为兄弟

8.    如何才能让 次时代租车服务终端 (ARCS)的代码符合 LSP

9.    这样做我们可能会引入什么新的问题?


五、           接口隔离原则

1.     接口“变胖”的问题 – 接口污染

2.     佳能一体机的遗留接口问题

3.     如何实现接口分离 – 适配器模式

4.     类适配器 – 多继承

5.     对象适配器 – 委托

6.     使用单元测试来发现问题

7.     次时代租车服务终端 (ARCS)在接口划分上的问题

8.     如何简化复杂的逻辑

9.     如何使用模板方法分离抽象与具体

10.  案例:ATM机接口设计的演化


六、           依赖倒置原则

1.    结构化设计理念的问题

2.    对象化设计理念

3.    依赖倒置到底倒置了什么

4.    如何分离关注点

5.    DI-依赖注入模式:讲对象的创建与使用分离

6.    案例:消息队列设计的演化


七、设计模式在 JDK 中的应用

1.    工厂模式在 Calendar 类中的应用

2.    建造者模式在 Calendar 类中的应用

3.    装饰器模式在 Collections 类中的应用

4.    适配器模式在 Collections 类中的应用

5.    模板模式在 Collections 类中的应用

6.    观察者模式在 JDK 中的应用

7.    观察者模式在 Google Guava EventBus中的应用


八、观察者模式在Spring 中的应用解

1.    Spring中的观察者模式

2.    ApplicationEvent

3.    EventObject

4.    注册 与 AbstractApplicationContext

5.    publishEvent

6.    addApplicationListener

7.    registerListeners

8.    ApplicationEventMulticaster

9.    multicaster消息推送


九、 组合模式在Spring 中的应用

1.    Cache 接口

2.    Spring 缓存管理

3.    CompositeCacheManager


十、DI模式在Spring 中的应用

1.    DI 容器的核心功能有哪些

2.    Spring 容器的配置文件

3.    执行入口 ApplicationContext

4.    配置文件解析 BeanConfigParser

5.    核心工厂类设计 BeanFactory







返回上一级