# design mode **Repository Path**: bruce6213/design-mode ## Basic Information - **Project Name**: design mode - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 工厂模式 **核心目的** 1. 给客户端提供更加友好的创建对象的方式,即一种**统一**创建对象的方式 2. 便于扩展:对修改关闭,对扩展开放 ``` @Test void contextLoads() { /** * 此处直接调用Circle类其实也可以实现 * 当然此处只是为了演示工厂模式的思想,客户端很难想到可以直接创建Circle类 */ CircleFactory circleFactory = new CircleFactory(); circleFactory.createTable(); circleFactory.createBed(); } ``` # 单例模式 ## 核心目的 1. 全局唯一、避免重复创建对象、节省存储空间 ``` @Slf4j public class NestSingleton { private NestSingleton(){} private static class InnerNest{ private static NestSingleton holder = new NestSingleton(); } public static NestSingleton getNestSingleton(){ return InnerNest.holder; } } ``` # 代理模式 ## 核心目的 能力的全面增强:原本明星只会唱歌,现在通过经纪人还能订机票 ``` @Slf4j public class RealStart implements Start{ @Override public void sing() { log.info("明星本人唱歌"); } @Override public void dance() { log.info("明星本人跳舞"); } @Override public void roadShow() { log.info("明星本人roadShow"); } @Override public void confer() { } @Override public void signContract() { } @Override public void bookTicket() { } } ``` ``` @Slf4j public class StartProxy implements Start{ private Start start = new RealStart(); @Override public void sing() { start.sing(); } @Override public void dance() { start.dance(); } @Override public void roadShow() { start.roadShow(); } @Override public void confer() { log.info("经纪人面谈"); } @Override public void signContract() { log.info("经纪人签合同"); } @Override public void bookTicket() { log.info("经纪人订票"); } } ``` # 适配器模式 ## 核心目的 强调对象转换(鸡变成鸭) # 装饰器模式 # 策略模式 1. 取代大量if/else语句 # 责任链模式 # 状态模式 # 参考链接 [设计模式](https://javadoop.com/post/design-pattern)