# java-design-patterns **Repository Path**: dybeq/java-design-patterns ## Basic Information - **Project Name**: java-design-patterns - **Description**: Java设计模式 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-04 - **Last Updated**: 2022-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 创建型模式 creational ## 单例模式 singleton 核心思想: 对外屏蔽构造器,调用者只能使用提供好的实体对象INSTANCE ### 懒汉式 #### 简单实现 1. 优点:简单,线程安全 2. 缺点:类加载时就初始化INSTANCE,容易造成资源浪费. - EagerManSingleton1 - EagerManSingleton2 #### 枚举类实现 1. 优点:极其简洁,使用枚举类特性实现,天生线程安全,性能优秀,不会被反射与反序列化破坏单例 2. 缺点:不可继承,不能延迟加载,容易造成资源浪费 - EagerManSingleton3 ### 饿汉式 #### 简单实现 1. 优点:延迟加载,节省资源 2. 缺点:需考虑线程安全问题,较复杂 - LazyManSingleton1 (线程不安全,禁止使用) - LazyManSingleton2 (线程安全,但加锁范围大,性能较差) #### 双重检查 - LazyManSingleton3 (双重检查的加锁方式,线程安全,但加锁范围较小,性能良好) #### 静态内部类实现 - LazyManSingleton4 (使用静态内部类实现,线程安全,不需要加锁,性能优秀) ## 工厂模式 factory ### 简单工厂 (不属于23种设计模式) - creational.factory.simple (弱爆了) ### 工厂方法 - creational.factory.method ### 抽象工厂 - creational.factory.abstract_ ## 建造者模式 builder - creational.builder ### 源码运用 - StringBuilder ## 原型模式 prototype 就是实现了clone接口 - creational.prototype ## 外观模式 facade ### UML ![外观模式UML](uml/structual/facade/UML_creational_facade.png) # 结构型模式 structural ## 装饰者模式 ### UML ![](uml/structual/decorator/UML_structual_decorator.png)