课程简介
软件企业及其研发团队面临大量初级程序开发人员低质量软件开发带来的严重问题,甚至即使高级程序员也存在着对提高软件设计质量认识不深的问题,造成许多公司的核心业务运行维护成本逐步提高,却不能更换、一直维护下去的恶性循环。如何切实有效地提高员工设计开发水平,从而有效地改善软件设计质量,成为迫切需要解决的问题。本内容在分享高质量软件设计的理论知识的同时,更关键的将这些知识投放到各个真实的设计场景中,通过对设计难题的深入剖析,寻找问题的根源,对症下药,从而制订出正确的设计方案。
课程收益
剖析设计模式的本质,跳出“为模式而模式”的设计方式,运用设计原则改善设计质量
掌握场景驱动设计的方式,明确了解角色、职责与协作在设计中的作用
梳理设计过程,结合真实案例,从业务建模入手,掌握基本的设计手法
了解和掌握UML,运用包图、组件图、类图和时序图进行系统设计
识别设计的坏味道,利用重构改善设计
剖析经典的开源框架,分析Java / .NET系统的架构设计原则
深入介绍分层架构、IoC、ORM等企业应用架构的核心模式
受众人群
初级程序员、高级程序员
课程周期
2天(12H)
课程大纲
时间 | 标题 | 授课内容 |
第一天 | 一、代码与设计模式 | 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中的应用 | |
八、单例模式详解 | 1.五种实现方式 2.存在的问题 3.如何实现线程唯一的单例 4.如何实现集群环境下的单例 5.如何实现一个多例模式 6.单例模式在 JVM Runtime 类中的应用 | |
第二天 | 一、门面模式详解
| 1.接口的可复用性和易用性之间的矛盾 2.Application Service 3.Transactional Script 4.领域驱动架构的演进 |
二、观察者模式在Spring 中的应用解 | 1.Spring中的观察者模式 2.ApplicationEvent 3.EventObject 4.注册 与 AbstractApplicationContext 5.publishEvent 6.addApplicationListener 7.registerListeners 8.ApplicationEventMulticaster 9.multicaster 消息推送 | |
三、模板模式在 Spring 中的应用 | 1.Spring Bean 的创建过程 2.通过 init-method 属性来指定初始化函数 3.Initializingbean 接口 4.三段式初始化 5.BeanPostProcessor 接口 6.Spring Bean 生命周期 | |
四、适配器模式在Spring 中的应用 | 1.适配器模式的原理与实现 2.适配器模式的选择 3.适配器模式应用场景 4.封装有缺陷的接口设计 5.统一多个类的接口设计 6.替换依赖的外部系统 7.兼容老版本接口 8.适配器模式在 Java 日志中的应用 9.slf4j统一接口定义 10.适配器模式在 Spring MVC中的应用 | |
五、策略模式在Spring 中的应用 | 1.Spring AOP 与 动态代理 2.AopProxy 接口 3.AopProxyFactory | |
六、组合模式在Spring 中的应用 | 1.Cache 接口 2.Spring 缓存管理 3.CompositeCacheManager | |
七、DI模式在Spring 中的应用 | 1.DI 容器的核心功能有哪些 2.Spring 容器的配置文件 3.执行入口 ApplicationContext 4.配置文件解析 BeanConfigParser 5.核心工厂类设计 BeanFactory |
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员