4006-998-758
3000+课程任你选择
设计模式速览课程
研发学院 技术总监 开课时间:2022-02-15
戴昊

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


查看老师详情
课程内容

课程大纲


课时

          目的

                   内容

1

设计模式背景介绍

Why:避免重复制造拙劣的轮子


What:被反复验证过的解题思路


How:设计思想与原则

模式背后的设计思想

分离变与不变:HTML与非侵入式 CSS,Js

依赖于抽象:几何面积计算器的扩展

组合优于继承:代码复用的结构选择

2

基于问题场景的模式导入(1)

Demo项目介绍


Step1. 初始需求:车辆租金计算


Step1.  初始实现:switch    case


Step2.  需求开始变化:按车型促销


使用“平铺直叙” 的方式基于 Step1 修改

行为型模式

设计原则:开放封闭原则(OCP)


如何在代码中引入“接线板”-- 抽象


使用行为型模式:策略模式 处理 Step2 的需求

极简UML

类图

思考对应方案,并使用  UML  表现自己的设计

3

基于问题场景的模式导入(2)

Step3. 需求继续变化:VIP打折,满减


如果继续使用“平铺直叙”的方式修改,代码将越来越难以维护


思路导入:应用对象组合添加间接性


思路导入:继承的真正的作用:保持类型一致性

结构性模式

基于上述思路,使用结构型模式:装饰器模式  处理    Step3  的需求


装饰器模式的类图核心结构


此核心结构在其他模式(代理,组合)中也会反复出现


总结此设计背后的思想:通过对象的组合引入间接性并达到多态

创建型模式

Step4.   如何降低装饰器模式的类创建复杂性

创建型模式:工厂模式可以解决问题么?似乎不能

4

基于问题场景的模式导入(3)

工厂模式 vs 建造者模式


建造者模式可以解决的问题:灵活配置复杂对象的创建过程

创建型模式

使用创建型模式:建造者模式 实现 Step4 的需求

总结

根据应用模式的 Before VS After,体会使用模式带来的灵活性和扩展性


体会模式背后的设计思路以及原则

扩展阅读

其余模式能解决的问题

电梯按钮背后的处理逻辑:状态模式

细粒度接口?粗粒度接口?应该怎么选择:外观模式

Undo,Redo的实现:命令模式



返回上一级