没有合适的资源?快使用搜索试试~ 我知道了~
该pdf是本人系统学习尚学堂推出的300Java大型设计模式部分后自己整理的学习笔记,希望对大家有帮助!!!
资源推荐
资源详情
资源评论
尚学堂 300Java 设计模式部分学习笔记(孙风涛)
0 / 117
尚学堂 300Java 设计模式
目录
0、设计模式分类(pattern classification) ......................................................................................... 3
0.0 创建型模式(单工抽建原) .................................................................................................. 3
0.1 结构型模式(适代桥装组外享) .......................................................................................... 3
0.2 行为型模式(模命迭观中,备解状策责访) ......................................................................... 3
1、 单例模式(singleton pattern) ............................................................................................. 3
1.1 饿汉式单例源码 ................................................................................................................. 4
1.2 懒汉式单例源码 ................................................................................................................. 5
1.3 双重检测锁式单例 ............................................................................................................. 6
1.4 静态内部类实现单例 ......................................................................................................... 7
1.5 枚举类实现单例模式 ......................................................................................................... 7
1.6 以懒汉式为例测试反射和反序列化破解单例 ................................................................. 9
1.7 防止反射和反序列化创建多个对象 ............................................................................... 10
2、工厂模式(factory pattern) ........................................................................................................ 12
2.1 简单工厂模式(静态工厂模式) ........................................................................................ 12
2.2 工厂方法模式 ................................................................................................................... 16
2.3 简单工厂模式和工厂方法模式 PK .................................................................................. 19
2.4 抽象工厂模式 ................................................................................................................... 20
3、建造者模式(builder pattern) .................................................................................................... 26
3.1 场景 .................................................................................................................................. 26
3.2 建造者模式的本质 ........................................................................................................... 26
3.3 示意图与代码部分 ........................................................................................................... 26
4、原型模式(prototype pattern) ................................................................................................... 32
4.1 Cloneable 接口实现克隆模式 .......................................................................................... 32
4.2 利用序列化和反序列化实现深克隆 ............................................................................... 37
5、创建型模式总结 ....................................................................................................................... 40
6、适配器模式(adapter pattern) ................................................................................................... 40
6.1 什么是适配器模式 ........................................................................................................... 40
6.2 模式中的角色 ................................................................................................................... 40
6.3 适配器模式的实现 ........................................................................................................... 40
7、代理模式(proxy pattern) .......................................................................................................... 43
7.1 静态代理(static proxy 自定义代理类)............................................................................. 44
7.2 动态代理(dynamic proxy 动态生成代理类) .................................................................... 47
8、桥接模式(bridge pattern) ......................................................................................................... 51
8.1 未使用桥接模式 ............................................................................................................... 51
8.2 采用桥接模式 ................................................................................................................... 54
8.3 桥接模式总结 ................................................................................................................... 57
9、组合模式(composite pattern) .................................................................................................. 58
9.1 UML 图和代码实现 .......................................................................................................... 58
尚学堂 300Java 设计模式部分学习笔记(孙风涛)
1 / 117
9.2 开发中的应用场景 ........................................................................................................... 62
10、装饰模式(decorator pattern) ................................................................................................. 62
10.1 装饰模式概述 ................................................................................................................. 62
10.2 装饰模式的 UML 图和实现代码 ................................................................................... 62
10.3 装饰模式总结 ................................................................................................................. 66
11、外观模式(façade pattern) ....................................................................................................... 66
11.1 外观模式概述 ................................................................................................................. 66
11.2 外观模式实现代码 ......................................................................................................... 67
11.3 开发中常见的场景 ......................................................................................................... 69
12、享元模式(flyweight pattern) .................................................................................................. 69
12.1 享元模式举例 ................................................................................................................. 69
12.2 享元模式实现 ................................................................................................................. 70
12.3 享元模式具体实现代码 ................................................................................................. 70
12.4 享元模式总结 ................................................................................................................. 73
13、结构型模式总结 ..................................................................................................................... 73
13.1 结构型模式汇总 ............................................................................................................. 73
13.2 三种类型模式关注点比较 ............................................................................................. 74
14、责任链模式(chain of responsibility pattern) .......................................................................... 74
14.1 责任链模式概述 ............................................................................................................. 74
14.2 以请假为例实现责任链模式 ......................................................................................... 74
14.3 责任链模式分析 ............................................................................................................. 80
15、迭代器模式(iterator pattern) ................................................................................................. 80
15.1 迭代器模式概述 ............................................................................................................. 80
15.2 迭代器模式代码实现 ..................................................................................................... 80
15.3 基本案例和开发场景 ..................................................................................................... 83
16、中介者模式(mediator pattern)............................................................................................... 83
16.1 中介者模式概述 ............................................................................................................. 83
16.2 中介者模式实现代码 ..................................................................................................... 84
16.3 中介者模式本质和开发场景 ......................................................................................... 88
17、命令模式(command pattern) ................................................................................................. 89
17.1 命令模式概述 ................................................................................................................. 89
17.2 命令模式代码实现 ......................................................................................................... 89
17.3 命令模式使用场景 ......................................................................................................... 91
18、解释器模式(interpreter pattern) ............................................................................................ 92
18.1 解释器模式概述 ............................................................................................................. 92
19、访问者模式(visitor pattern) ................................................................................................... 92
19.1 访问者模式概述 ............................................................................................................. 92
19.2 开发中的场景(应用范围非常窄,了解即可) .............................................................. 92
20、策略模式(strategy pattern) .................................................................................................... 92
20.1 策略模式概述 ................................................................................................................. 92
20.2 策略模式实现代码 ......................................................................................................... 94
20.3 策略模式本质与开发场景 ............................................................................................. 97
21、模板方法模式(template method pattern) ............................................................................. 97
21.1 模板方法模式概述 ......................................................................................................... 97
尚学堂 300Java 设计模式部分学习笔记(孙风涛)
2 / 117
21.2 模板方法模式实现代码 ................................................................................................. 98
21.3 模板方法模式总结 ....................................................................................................... 100
22、状态模式(state pattern) ....................................................................................................... 101
22.1 状态模式概述 ............................................................................................................... 101
22.2 状态模式实现过程 ....................................................................................................... 102
22.3 状态模式总结 ............................................................................................................... 105
23、观察者模式(observer pattern) ............................................................................................. 105
23.1 观察者模式概述 ........................................................................................................... 105
23.2 代码实现观察者模式 ................................................................................................... 106
23.3 JavaSE 提供的观察者模式 ........................................................................................... 109
23.4 观察者模式总结 ........................................................................................................... 111
24、备忘录模式(memento pattern)............................................................................................ 111
24.1 备忘录模式概述 ........................................................................................................... 111
24.2 备忘录实现代码 ........................................................................................................... 112
24.3 备忘录模式总结 ........................................................................................................... 115
25、行为型模式汇总 ................................................................................................................... 116
说明:该 pdf 是本人系统学习尚学堂推出的 300 集大型 Java 视频设计模式部分后整理的学
习笔记,上传后希望对大家有帮助。在视频一开始,高淇老师就说过,不要指望通过这些视
频就把设计模式学好,重在理解其思想,重在实际应用。有些模式我自己也理解的不是十分
深刻,自己也在渐渐的将这些模式用到自己写的代码中,希望和大家一起进步。另外整理的
东西可能有纰漏或者自己理解不对的地方,希望大家体谅,或者通过 13432083020@163.com
或 1535392975@qq.com 联系我。
尚学堂 300Java 设计模式部分学习笔记(孙风涛)
3 / 117
0、设计模式分类(pattern classification)
将设计者的思维融入大家的学习和工作中,思维和思考方式的转变,重要的是学习
思维和思考的方式。
GOF23 种设计模式,全称是 Group Of Four 23 中设计模式。
0.0 创建型模式(单工抽建原)
创建型模式主要是用来帮助人们创建对象,具体包括以下几种:单例模式、工厂模式、
抽象工厂模式、建造者模式、原型模式
0.1 结构型模式(适代桥装组外享)
核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大
的问题。
适配器模式、代理模式、桥接模式、装饰模式、组合模式、外观模式、享元模式
0.2 行为型模式(模命迭观中,备解状策责访)
行为型模式关注系统中对象之间的相互交互,研究系统在运行的对象之间的相互通信和
协作,进一步明确对象的职责,共有 11 种模式。
模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解
释器模式、状态模式、策略模式、职责链模式、访问者模式
1、 单例模式(singleton pattern)
核心作用:
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
常见应用场景:
1) Windows 的 Task Manager(任务管理器)就是很典型的单例模式;
2) Windows 的 Recycle Bin(回收站)也是典型的单例应用。在整个系统运行过程中,回收站
一直维护着仅有的一个实例。
3) 项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,
每次 new 一个对象去读取。
4) 网站的计数器,一般也是采用单例模式实现,否则难以同步。
5) 应用程序的日志应用,一般都可用单例模式实现,这一般是由于共享的日志文件一直处
于打开状态,因为只能有一个实例去操作,否则内容不好追加。
6) 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。
7) 操作系统的文件系统,也是大的单例模式实现的具体例子,一个操作系统只能有一个文
件系统。
8) Application 也是单例的典型应用(Servlet 编程中会涉及到)。
9) 在 Spring 中,每个 Bean 默认就是单例的,这样做的优点是 Spring 容器可以管理。
10) 在 Servlet 编程中,每个 Servlet 也是单例。
11) 在 Sping MVC 框架/Struts1 框架中,控制器对象也是单例。
尚学堂 300Java 设计模式部分学习笔记(孙风涛)
4 / 117
重点记住:任务管理器、回收站、Application、Servlet、控制器对象
单例模式的优点:
1) 由于单例模式只生成一个实例,减少了系统性能开销,但一个对象的产生需要比较多的
资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单
例对象,然后永久驻留内存的方式解决。
2) 单例模式可以在系统设置全局的访问点,优化共享资源访问,例如可以设计一个单例类,
负责所有数据表的映射处理。
常见的五种单例模式实现方式:
1) 主要:
饿汉式(线程安全,调用效率高。但是,不能延时加载。)
懒汉式(线程安全,调用效率不高。但是,可以延时加载。)
2) 其他
双重检测锁式(由于 JVM 底层内部模型原因,偶尔会出问题。不建议使用)
静态内部类式(线程安全,调用效率高。但是,可以延时加载)
枚举单例(线程安全,调用效率高,不能延时加载,可以天然放置反射和序列化漏洞)
1.1 饿汉式单例源码
package com.bjsxt.singleton;
/**
* 测试饿汉式单例模式
*/
public class SingletonDemo1 {
//类初始化时,立即加载这个对象(没有延时加载的优势)。
//加载类时,天然的是线程安全的!
private static SingletonDemo1 instance = new SingletonDemo1();
private SingletonDemo1(){
}
//方法没有同步,调用效率高!
public static SingletonDemo1 getInstance(){
return instance;
}
}
剩余116页未读,继续阅读
资源评论
Nazarite_KakaLuoTo
- 粉丝: 44
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功