JDK源码中使用的设计模式-总结
来源:互联网 发布:系统交互流程图软件 编辑:程序博客网 时间:2024/06/05 07:11
23种设计模式分为三大类:创建型模式5种/结构型模式7种/行为型模式11种
一、结构性模式
适配器模式:用来把一个接口转化成另一个接口。例如:Arrays
桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地变化。例如:JDBC
组合模式:使得客户端看来单个对象和对象的组合是同等的。换句话说,某个类型的方法同时也接受自身类型作为参数。Map(putAll)/List(addAll)
装饰者模式:动态的给一个对象附加额外的功能,这也是子类的一种替代方式。可以看到,在创建一个类型的时候,同时也传入同一类型的对象;BufferedInputStream/DataInputStream
门面模式:给一组组件,接口,抽象,或者子系统提供一个简单的接口。
享元模式:使用缓存来加速大量小对象的访问时间。java.lang.Integer#valueOf(int)
代理模式:用一个简单的对象来代替一个复杂的或者创建耗时的对象。RMI
二、创建模式
抽象工厂模式、建造模式、
工厂方法:就是一个返回具体对象的方法。java.lang.Object#toString()
原型模式:使得类的实例能够生成自身的拷贝;java.lang.Object#clone()
单例模式:用来确保类只有一个实例。
三、行为模式
责任链模式:通过把请求从一个对象传递到链条中下一个对象的方式,直到请求被处理完毕,以实现对象间的解耦。java.util.logging.Logger#log()
一、结构性模式
适配器模式:用来把一个接口转化成另一个接口。例如:Arrays
桥接模式:这个模式将抽象和抽象操作的实现进行了解耦,这样使得抽象和实现可以独立地变化。例如:JDBC
组合模式:使得客户端看来单个对象和对象的组合是同等的。换句话说,某个类型的方法同时也接受自身类型作为参数。Map(putAll)/List(addAll)
装饰者模式:动态的给一个对象附加额外的功能,这也是子类的一种替代方式。可以看到,在创建一个类型的时候,同时也传入同一类型的对象;BufferedInputStream/DataInputStream
门面模式:给一组组件,接口,抽象,或者子系统提供一个简单的接口。
享元模式:使用缓存来加速大量小对象的访问时间。java.lang.Integer#valueOf(int)
代理模式:用一个简单的对象来代替一个复杂的或者创建耗时的对象。RMI
二、创建模式
抽象工厂模式、建造模式、
工厂方法:就是一个返回具体对象的方法。java.lang.Object#toString()
原型模式:使得类的实例能够生成自身的拷贝;java.lang.Object#clone()
单例模式:用来确保类只有一个实例。
三、行为模式
责任链模式:通过把请求从一个对象传递到链条中下一个对象的方式,直到请求被处理完毕,以实现对象间的解耦。java.util.logging.Logger#log()
命令模式:将操作封装到对象内,以便存储,传递和返回。java.lang.Runnable
解释器模式:通常定义了一个语言的语法,然后解析相应语法的语句。
迭代器模式:提供一个一致的方法来顺序访问集合中的对象,这个方法与底层的集合的具体实现无关。
中介者模式:通过使用一个中间对象来进行消息分发以及减少类之间的直接依赖。
备忘录模式:生成对象状态的一个快照,以便对象可以恢复原始状态而不用暴露自身的内容。Date对象通过自身内部的一个long值来实现备忘录模式。
空对象模式:这个模式通过一个无意义的对象来代替没有对象这个状态。它使得你不用额外对空对象进行处理。
观察者模式:它使得一个对象可以灵活的将消息发送给感兴趣的对象。
状态模式:通过改变对象内部的状态,使得你可以在运行时动态改变一个对象的行为。
策略模式:使用这个模式来将一组算法封装成一系列对象。通过传递这些对象可以灵活的改变程序的功能。
模板方法模式:让子类可以重写方法的一部分,而不是整个重写,你可以控制子类需要重写那些操作。
访问者模式:提供一个方便的可维护的方式来操作一组对象。它使得你在不改变操作的对象前提下,可以修改或者扩展对象的行为
阅读全文
0 0
- JDK源码中使用的设计模式-总结
- JDK源码中使用的设计模式
- JDK中使用到的23个经典设计模式
- JDK中使用到的23个经典设计模式
- JDK中使用到的23个经典设计模式
- 【设计模式】JDK源码中用到的设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- JDK中设计模式
- webrtc的base库在windows平台的编译
- 用C++实现一个LRU cache
- 88. Merge Sorted Array
- redis基本操作
- Codeforces 888A Local Extrema
- JDK源码中使用的设计模式-总结
- 【tensorflow 学习】tf.get_variable()和tf.Variable()的区别
- 辗转相除法求两个整数的最大公约数
- 二叉树的建立,前序,中序,后序遍历
- Android开发中的代码混淆
- nuc972的ramfs的配置yaffs2,ubi文件系统
- muduo库源码学习(base):Logfile
- 集合类操作优化经验总结
- 改善程序员生活质量的 3+10 习惯