目录
第一章 创建型模式
单例模式:
饿汉式:天然的线程安全,效率高。
懒汉式:
双重检测锁模式:
静态内部类:
枚举单例:
反射破解除枚举单例以外的单例模式:
反序列化破解除枚举单例以外的单例模式:
工厂模式:
简单工厂模式:
工厂方法模式:
简单工厂模式与工厂方法模式的对比:
抽象工厂模式:
工厂模式总结:
建造者模式:
原型模式:
浅克隆:
深克隆:
使用序列化和反序列化实现深克隆:
第二章 结构型模式
适配器模式:
类配器模式:
对象适配器模式:
代理模式:
静态代理:
动态代理:
桥接模式:
组合模式:
装饰模式:
IO流的设计是一个典型的装饰模式:
外观模式:
享元模式:
第三章 行为型模式
责任链模式:
迭代器模式:
中介者模式:
命令模式:
解释器模式:
访问者模式:
策略模式:
模板方法模式:
状态模式:
观察者模式:
备忘录模式:
第一章 创建型模式
单例模式:
作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
常见的应用场景:
单例模式的优点:
饿汉式:天然的线程安全,效率高。
懒汉式:
双重检测锁模式:
静态内部类:
枚举单例:
枚举元素本身就是单例。但是他没有延时加载。可以防止反射和反序列化漏洞。
反射破解除枚举单例以外的单例模式:
防止的方法:
反序列化破解除枚举单例以外的单例模式:
防止的方法:
反序列化时自动调用readResolve方法。
工厂模式:
简单工厂模式:
工厂方法模式:
它与简单工厂模式最大的不同在于简单工厂模式只有一个工厂类,而工厂方法模式有一组实现了相同接口的工厂类。它符合开闭原则,当需要扩展的时候,不用修改已有代码,只需要增加。
简单工厂模式与工厂方法模式的对比:
抽象工厂模式:
工厂模式总结:
建造者模式:
原型模式:
在使用new产生新对象比较耗时的情况下,我们可以使用clone来进行新对象的创建。
浅克隆:
深克隆:
深克隆其实就是将原对象下面的属性也进行克隆。
使用序列化和反序列化实现深克隆:
第二章 结构型模式
结构型模型的核心作用是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。
适配器模式:
类配器模式:
对象适配器模式:
代理模式:
通过代理,控制对对象的访问。可以详细控制访问某个类或对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理,即AOP(Aspect Oriented Programming面向切面编程)的微观实现,从而实现将统一流程代码放到代理类中处理。
静态代理:
动态代理:
动态代理相比于静态代理的优点是:抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理没这样,我们可以更加灵活和统一地处理众多的方法。
桥接模式:
组合模式:
组合模式适用于:将部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。
装饰模式:
IO流的设计是一个典型的装饰模式:
缺点是会产生很多的小对象,大量小对象占据内存,一定程度上影响性能,且装饰模式易出错,调试排查比较麻烦。
外观模式:
享元模式:
测试:
第三章 行为型模式
责任链模式:
将能够处理同哟类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能就处理,否则就传递给链的下一个。
迭代器模式:
测试:
中介者模式:
命令模式:
将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作,也称为“动作Action模式”,“事务transatcion模式”。
解释器模式:
访问者模式:
策略模式:
对应于解决某一个问题的一个算法族,允许用户从该算法族中任选一个算法解决某一问题,同事可以方便地更换算法或者新增算法,并且由客户端决定调用哪个算法。
模板方法模式:
状态模式:
观察者模式:
备忘录模式:
核心就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。
|