你好呀,我是猿java。
设计模式,不管是在前端开发,还是后端开发,求职面试中似乎总有它的身影。身为 Java后端人员,更加能体会到它的重要性,JDK源码,Spring等流行的开源框架,设计模式更是不可或缺,
因此,今天,我们就来分享 23种经典的设计模式以及JDK中蕴藏了哪些经典的模式。
设计模式的分类 {#设计模式的分类}
23种经典设计模式,按照目的可以分为三类:创建型模式、结构型模式和行为型模式。
Creational Patterns(创建型模式) 5种 {#Creational-Patterns(创建型模式)-5种}
- Singleton Pattern(单例模式)
- Factory Method Pattern(工厂方法模式)
- Abstract Factory Pattern(抽象工厂模式)
- Builder Pattern(建造者模式)
- Prototype Pattern(原型模式)
Structural Patterns(结构型模式)7种 {#Structural-Patterns(结构型模式)7种}
- Proxy Pattern(代理模式)
- Adapter Pattern(适配器模式)
- Decorator Pattern(装饰器模式)
- Facade Pattern(外观模式)
- Bridge Pattern(桥接模式)
- Composite Pattern(组合模式)
- Flyweight Pattern(享元模式)
Behavioral Patterns(行为型模式)11种 {#Behavioral-Patterns(行为型模式)11种}
- Strategy Pattern(策略模式)
- Template Method Pattern(模板方法模式)
- Observer Pattern(观察者模式)
- Iterator Pattern(迭代器模式)
- Chain of Responsibility Pattern(责任链模式)
- Command Pattern(命令模式)
- Memento Pattern(备忘录模式)
- State Pattern(状态模式)
- Visitor Pattern(访问者模式)
- Mediator Pattern(中介者模式)
- Interpreter Pattern(解释器模式)
设计模式详解 {#设计模式详解}
Singleton Pattern(单例模式) {#Singleton-Pattern(单例模式)}
一个类只允许创建一个实例(或对象),单例模式比较简单,常见有3种实现方式:
饿汉式(Eager Initialization): {#饿汉式(Eager-Initialization):}
在类加载时就创建实例,保证在多线程环境下也能正常工作。示例代码如下:
懒汉式(Lazy Initialization): {#懒汉式(Lazy-Initialization):}
和饿汉式模式相反,懒汉式并不是在类加载时创建实例,而是需要在第一次使用时才创建实例,示例代码如下:
懒汉式并无法保证多线程情况下的线程安全性,通过双重检查来减小锁的范围以及保证线程安全
双重检查锁(Double-Checked Locking): {#双重检查锁(Double-Checked-Locking):}
枚举 {#枚举}
枚举是天然的单例模式,也是Effective Java 建议的方式,示例代码如下:
JDK 源码里的设计模式 {#JDK-源码里的设计模式}
参考 {#参考}
Examples of GoF Design Patterns in Java's core libraries
交流学习 {#交流学习}
最后,把猿哥的座右铭送给你:投资自己才是最大的财富。由于水平有限,如果文章存在缺点和错误,欢迎批评指正。感谢转发给更多的好友,关注我:猿java,为你呈现更多的硬核文章。