20200819——jdk中的设计模式

前言

面试的时候被问到了,jdk的设计原理。学的都是框架的设计模式,工厂模式,代理模式,单例模式等等,一直没想过jdk为什么要这么设计。

类间的关系有五种

继承, 委托, 依赖,聚合,组合

20200819——jdk中的设计模式_第1张图片

单例模式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

作用:共享对象,节省内存
Integer.valueOf
String的常量池

代理模式Proxy

作用:透明调用被代理模式,无须知道复杂的实现细节。增强被代理类的功能

观察者模式Observer

通知对象状态改变

模板模式

作用:定义算法的结构,子类只实现不同的部分
ThreadPoolExecutor.Worker

策略模式

作用:提供不同的算法
THreadPoolExecutor四种拒绝策略

责任链模式

作用:请求会被链上的对象处理,但是客户端不知道哪些请求会被哪些对象处理。
ClassLoader的双亲委派机制

后记

慢慢整理,慢慢学习。

你可能感兴趣的:(设计模式)