前言 面试的时候被问到了,jdk的设计原理。学的都是框架的设计模式,工厂模式,代理模式,单例模式等等,一直没想过jdk为什么要这么设计。
类间的关系有五种 继承, 委托, 依赖,聚合,组合
文章图片
单例模式Singleton 作用:是为了保证类中只有一个实现类,提供全局的访问点。
Runtime
静态工厂Factory 作用:代替构造函数创建对象 方法名比构造函数更清晰
Interger.valueOf
Class.forName
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
private static native Class> forName0(String name, boolean initialize,
ClassLoader loader,
Class> caller)
throws ClassNotFoundException;
工厂方法Factory Method 作用:子类决定哪一个类实现
抽象工厂Abstract Factory 作用:创建某一种类的对象
构造者模式 Builder 作用:将构造逻辑提到单独的类中,分离类的构造逻辑和表现
原型模式Prototype 作用:复制对象 浅拷贝,深拷贝
.clone方法
适配器模式Adapter 作用:使不兼容的接口相容
java.io.InputStreamReader
桥接模式Bridge 作用:将抽象部分与其实现部分分离,使他们都可以独立的变化
装饰器模式Decorator 作用:为类添加新的功能,防止类继承带来爆炸式的增长
java.io包
享元模式Flyweight 【20200819——jdk中的设计模式】作用:共享对象,节省内存
Integer.valueOf
String的常量池
代理模式Proxy 作用:透明调用被代理模式,无须知道复杂的实现细节。增强被代理类的功能
观察者模式Observer 通知对象状态改变
模板模式 作用:定义算法的结构,子类只实现不同的部分
ThreadPoolExecutor.Worker
策略模式 作用:提供不同的算法
THreadPoolExecutor四种拒绝策略
责任链模式 作用:请求会被链上的对象处理,但是客户端不知道哪些请求会被哪些对象处理。
ClassLoader的双亲委派机制
后记 慢慢整理,慢慢学习。
推荐阅读
- 面试|我经历的IT公司面试及离职感受(转)
- java|设计模式——创建型——工厂方法(Factory Method)
- 设计模式|设计模式_创建型模式——工厂方法
- 设计模式|设计模式——创建型软件设计模式——工厂方法模式
- 设计模式之装饰器模式
- 设计模式之设计原则
- 设计模式六大原则(5)(迪米特法则 最少知道)
- 观察者模式实现之EventBus(Google)
- Java高级面试|常见设计模式——装饰模式
- java设计模式——单例模式