4006-998-758
3000+课程任你选择
java设计模式和代码重构
研发学院 软件架构师 开课时间:2021-07-28
曹雪松

曾担任淘宝技术总监、华胜天成项目经理,精通软件设计的理论、实践和工具,有10年以上的大型项目研发及项目管理经验,曾经策划多个大型项目与网站的架构,主持过访问量达亿级大型网站,熟悉大型网站的优化与运维。掌握多种开发平台熟悉各种中间件框架平台,研究过大量开源的框架平台,经过多年实践形成自己架构风格,擅长Java、javaEE方面的各种技术; 在软件架构、设计模式、详细设计、重构、海量数据处理和优化、中间件技术、nosql等方面有丰富的实践经验亲自参与实施项目:淘宝数据魔方,淘宝服务平台,国电调试所项目管理系统,中科院子午工程数据与通信系统,某大型电子商务网站架构、项目管理、性能优化,苏州金莱克洁具有限公司ERP项目,苏州海关保税加工辅助核销系统等。


查看老师详情
课程内容

课程大纲


第一部分

面向对象设计原则

1、  软件的可维护性与可复用性

(1)软件系统的可维护性

(2)软件系统的可重用性

2、什么是优秀的设计

3、引入案例 (影片租赁系统)

4、软件设计原则

(1)开闭原则(ocp)

(2)里氏替换原则(lsp)

(3)依赖倒置原则(dip)

(4)接口隔离原则(isp)

(5)合成/聚合服用原则(carp)

(6)迪米特法则(lod)


第二部分

创建型设计模式

1、工厂方法(method factory)模式

(1)引入与结构

(2)农场系统中的实现

(3)java语言中工厂方法的应用

2、抽象工厂(abstract factory)模式

(1)引入和问题

(2)结构

(3)使用场景优缺点

(4)农场系统中的实现

(5)其它案例分析以及与java反射机制的综合运用

3、单例(singleton)模式

(1)引入和结构

(2)java中的实现(多种实现方式)

(3)使用场景

(4)单例模式在开发中的实际应用

(5)   序列键生成器实现

 (6)   多例模式

4、构建(builder)模式

(1)引入和结构

(2)构建模式的活动序列和实现

(3)构建模式在javaMail技术中的使用

(4)构建模式的使用场景优缺点  

5、原型(prototype)模式

(1)引入,变量、对象、对象的引用

(2)java对象的复制

(3)原型模式的实现

(4)深拷贝和浅拷贝

(5)使用场景及优缺点


第三部分

结构型设计模式

1、适配器(adapter)模式

(1)引入

(2)类的适配模式效果和实现

(3)对象的适配模式效果和实现

(4)使用场景和优缺点

(5)适配模式在架构层次上的应用

 ( 6 )    缺省适配器

2、桥梁(bridge)模式

(1)引入与结构

(2)驱动器和jdbc驱动

(3)代码重构角度看桥梁模式

(4)实现

(5)使用场景及优缺点

3、合成(composite)模式(简述)

(1)通过对象的树结构引入并简介

(2)安全式和透明式的合成模式

(3)安全式的合成模式

(4)透明式的合成模式

(5)合成模式的实现

4、装饰(decorator)模式

(1)引言与结构

(2)安全式和透明式的合成模式

(3)使用场景和优缺点

(4)发票系统案例

(5)装饰模式的实现

5、java io专题中设计模式的使用

(1)java io库的设计原则

(2)装饰模式的应用

(3)半透明装饰模式的使用

(4)适配模式的使用

(5)从byte流到char流的适配

6、门面(facade)模式

(1)引入与结构

(2)门面模式的实现

(3)使用场景和优缺点

(4)session中的门面模式

7、享元模式(flyweight pattern)

(1)引入

(2)单纯享元模式的结构

(3)复合享元模式的结构

(4)模式的实现

(5)使用场景和优缺点

8、代理(proxy)模式

(1)引入

(2)静态代理的结构和实现

(3)动态代理的结构和实现

(4)代理模式的使用场景和优缺点

 ( 5 )    cglib代理

(6) RPC 中的使用


第四部分

行为型设计模式一

 1、责任链(chain of responseibility)模式(简述)

(1)从击鼓传花引入

(2)结构

(3)实现

(4)餐费审批案例

2、命令(command)模式

(1)引入与结构

(2)java语言内的案例:awt事件机制

(3)实现

(4)在视图中使用命令模式

(5)随身听使用案例

3、解释器(interpreter)模式(简述)

(1)引入和结构

(2)解释器模式实现

(3)一个示意性的实现

4、迭代(iterator)模式(简述)

(1)引入和结构

(2)实现

(3)使用场景和优缺点

(4)java语言中队迭代模式的支持

5、调停者(mediator)模式(简述)

(1)引入和结构

(2)调停者模式的实现

(3)使用场景和优缺点

6、备忘录(memento)模式(简述)

(1)备忘录模式的结构

(2)白箱实现

(3)黑箱实现

(4)备忘录模式的应用

(5)使用场景和优缺点

第五部分

行为型设计模式二

1、观察者(observer)模式

(1)引入与结构

(2)实现

(3)java语言对观察者模式提供的支持

(4)案例及使用

2、状态(state)模式

(1)引入与结构

(2)效果和场景

(3)状态模式在投票系统中的使用

3、策略(strategy)模式

(1)引入

(2)实现

(3)java内部的例子

(4)图书折扣案例

(5)使用场景和优缺点

(6)认证案例

4、模板方法(template method)模式

(1)引入与结构

(2)java语言中模板方法模式的使用

(3)模板方法模式在系统开发异常处理中的应用

(4)模板方法在代码重构中的应用

5、访问者(visitor)模式(简述)

(1)引入与结构

(2)系统的时序图

(3)使用场景和优缺点

(4)访问者模式的实现

(5)电脑专卖系统中的实际应用


第六部分

设计模式综合使用

1. java线程异步设计与模式

2. 日志系统中设计模式的使用

3.   包装jdbc操作设计模式的使用

4.  异步并行加载框架设计模式的使用


第七部分

认识软件代码质量、建立重构意识

 内容一:软件代码的新思维

1.  软件可维护性(为什么必须重视软件的可维护性)

2.   代码质量概述

3.    破窗效应

4.    对代码的重新认识---代码就是设计

5.    优秀代码的评价标准

6.    好代码和糟糕代码之间的区别

7.    劣质代码的代价

8.    大师评价整洁代码的标准

内容二:重构思想

1.   重构概述

2.   何时重构

3.   如何发现哪些地方需要重构

4.    如何保证重构的正确

5.    如何测试重构

6.    通过一个小案例演示重构的基本思想(什么时间重构,如何发现重构点,如何保证重构的正确性,最后如何验收)

内容三:案例—通过实际项目演示重构

1.   介绍项目需求情况,进行设计

2.    阅读代码指出代码坏症状

通过重构逐步改善代码质量


第八部分

发现代码的坏味道,找出代码重构点

内容一:重构关键—发现代码的坏味道

1. 代码坏味道概述

2. 代码坏味道的分类

3. 代码坏味道----低级篇(重复的代码、过长的函数、过大               的类、过长的参数列表、发散式变化、分散的修改)

4. 代码坏味道----中级篇(伪面向对象的调用、数据泥团、            基本类型的误用、switch-case结构的误用、平行继承体              系、过薄的类、只有局部意义的成员变量)

5. 代码坏味道----高级篇(过度耦合的消息链、过薄的中间            对象、紧耦合类、相似的类、只有数据的类、滥用类的继               承关系)

6. 通过案例,让学员寻找代码坏味道

7. 可以根据客户现在的项目作为案例进行现场分析,找出相              应 的代码坏味道

内容二:某项目分析----重点了解现实项目代码的充斥大量坏味道

1. 介绍项目需求情况,阅读现有代码指出代码坏症状

2. 不看不知道,代码到底有多烂—触目惊心的代码

3.  通过重构逐步改善代码质量

4.  本案例学习多种重构方式


第九部分

重构实践

内容一:重构技术

1.  重构名录

2.  介绍常见的重构技术

3.  分别通过相关案例展示重构手段

内容二:重构案例—该案例重点    函数和函数调用重构

1.  函数的重构

2.  函数调用重构

3.  函数参数的重构

4.  重复代码处理策略

5.  通过案例介绍函数的重构

内容三:重构案例—该案例重点 复杂条件表达式重构

1.  复杂条件表达式重构

2.  IF/Else语句的危害

3.  Switch语句的危害

4.  通过案例介绍如何重构面向过程代码到面向对象

内容四:重构案例—该案例重点学习代码格式和命名

1.  代码格式规范

2.  代码命名-名副其实

3.  很重要,但是总被忽略的基本功

4.  通过案例介绍代码格式以及如何使用IDE工具进行定制格式

5.  通过案例介绍代码的命名,以及如何重构

 内容五:重构案例—该案例重点 数据结构重构

1.   数据结构重构

2.   通过案例介绍如何重构面向过程代码到面向对象

内容六:重构案例—该案例重点 对象职责和对象重构

1.   过程化思维和面向对象设计

2.   对象的重新思考

3.   职责驱动的对象设计

4.    通过案例介绍如何重构面向过程代码到面向对象


第十部分

重构到模式

内容一:案例---重点介绍重构基本类型依赖和对应模式

1.  通过案例学习以下重构到模式手段

2.  以State取代状态改变条件语句

3.  以Strategy取代条件逻辑

4.  以Composite取代隐含树

5.  转移装饰功能到Decorator

6.  用Builder封装Composite

7.  重点学习案例的重构到模式的过程

内容二:案例---重点介绍重构代码重复和对应模式

1.  通过案例学习以下重构到模式手段

2.  构造Template Method

3.  以Composite取代一/多之分

4.  引入Null Object

5.  用Adapter统一接口

6.  用Fatory Method引入多态创建

7.  重点学习案例的重构到模式的过程





返回上一级