当前位置: 首页 > news >正文

常见设计模式-复习

常见设计模式

1.单例模式 (Singleton Pattern)

核心思想:确保一个类在整个系统中只有一个实例,并提供一个全局访问点

  • 在Java中,单例不只是简单的“唯一”,还要考虑线程安全、反射攻击、序列化陷阱

  • 实现方式

public class Singleton {private Singleton(){}private static class Holder{private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return Holder.INSTANCE; // 延迟加载且线程安全}
}

理由:静态内部类单例利用 JVM 的类加载和初始化机制,在不使用任何同步锁的情况下,实现了线程安全的懒加载, 是一种性能和安全性都最优的单例实现方式。

由此可以切入了解JVM 的类加载和初始化机制

2.策略模式 (Strategy Pattern)

核心思想:定义一系列算法,将每一个算法封装起来,并使它们可相互替换。

  • 其核心是消除冗长的 if-elseswitch 语句,符合“开闭原则”。
//定义一个支付接口
public interface PaymentStrategy { void pay(int amount); }// 环境角色(通过Map消除if-else)
public class PaymentContext {private static final Map<String, PaymentStrategy> strategies = new HashMap<>();static {strategies.put("ALIPAY", amount -> System.out.println("使用支付宝支付:" + amount));strategies.put("WECHAT", amount -> System.out.println("使用微信支付:" + amount));}public void execute(String type, int amount) {strategies.get(type).pay(amount);}
}
  • 在 Spring 环境中,策略模式通常结合 IoC 容器实现,将各策略实现类注册为 Bean,并通过注入 Map<String, Strategy>List<Strategy> 实现策略自动发现与扩展。

常常应用在选择分支多的场景,使其代码符合开闭原则

3.工厂模式 (Factory Pattern)

核心思想:定义一个创建对象的接口,让子类决定实例化哪一个类。

  • 工厂模式通过解耦“使用者”和“创建者”,让代码在面对对象变化时更具弹性。
  • 简单工厂 vs 工厂方法
    • 简单工厂:一个工厂类根据参数创建所有产品(违背开闭原则)。
    • 工厂方法:每个产品对应一个工厂子类(符合开闭原则)。
  • 应用场景LoggerFactory.getLogger()、Spring 的 BeanFactory、JDBC 驱动加载。

4.适配器模式 (Adapter Pattern)

核心思想:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的类可以一起工作。

  • 它是“补救模式”。当你无法修改老代码或第三方库,但新接口规范又不一致时,适配器是最好的胶水。
  • 实现方式:通常使用组合(对象适配器)优于继承(类适配器)。
// 目标接口
public interface TypeC { void charge(); }// 已有类(不兼容)
public class MicroUSB { void power() { System.out.println("MicroUSB供电"); } }// 适配器
public class TypeCAdapter implements TypeC {private MicroUSB microUSB = new MicroUSB();@Overridepublic void charge() { microUSB.power(); } // 转换调用
}

应用场景: 常见于 DTO / VO 转换、第三方 SDK 封装、接口版本兼容(v1 → v2)

http://www.jsqmd.com/news/312189/

相关文章:

  • 食品加工废水第三方运营品牌企业哪家靠谱,费用大概多少钱?
  • 水玻璃靠谱品牌有哪些,费用怎么收
  • linux——make/Makefile自动化工程构建 - 指南
  • 司拉德帕Seladelpar常见副作用处理:头痛瘙痒与血脂变化监测管理
  • 总结评价好的高精度硅酸盐分析仪厂家,看哪家值得推荐?
  • 2026年山东地区好用的数字展厅设计公司,的品牌有哪些
  • 2026年企业和文化团建活动服务靠谱公司推荐与价格分析
  • Flink 进程内存配置详解:三种配置方式、JVM 参数映射与常见踩坑
  • 玛伐凯泰mavacamten剂量滴定方案详解:基于心脏超声参数的个体化调整策略
  • C#每日面试题-Thread.Sleep和Task.Delay的区别
  • C#每日面试题-Task和Thread的区别
  • 包头地区智能网联汽车技术应用专业升学辅导课程价格怎么样
  • 文献内容:基于非对称纳什谈判的多微网电能共享运行优化策略。 #在 MATLAB 平台上进行算例仿真
  • 2026年行业内知名的防火涂料定制厂家推荐榜,隧道防火涂料/水性防火涂料/油性防火涂料,防火涂料制造厂如何选
  • 一种自组装捷径,助力打造更高效的有机太阳能电池?
  • 选购高精度硅酸盐分析仪,陶瓷多元素分析仪供应商哪家比较靠谱
  • 聊聊2026年好用的玻璃硅酸盐分析仪公司,哪家值得选购
  • 2026年口碑好的奶皮子酸奶厂家,圣祥倒立不撒产品优势在哪
  • 南京贝奇尔机械有限公司 联系方式:查询方式及企业背景简介
  • FilePress:告别“文件失控”,打造不依赖于个人的组织能力。
  • 2026年热门的集成铝扣板/铝扣板厂家综合实力参考(2026)
  • 南京贝奇尔机械有限公司 联系方式:联系前的注意事项与准备
  • 2026合肥留学机构排名,稳定可靠中介推荐与选择指南
  • 实用指南:幽冥大陆(二十八)Fortran语言智慧农业电子秤读取——东方仙盟炼气期
  • 2026年成都留学机构排名发布,经验丰富机构全面解析
  • 2026年合肥留学机构前十,反馈及时至关重要
  • 2026年苏州留学中介排名,收费透明服务全面解读
  • 2026年长沙留学中介排名,稳定可靠的机构如何选择?
  • 合肥留学中介十强盘点,申请成功率高!值得信赖
  • 济南硕士留学中介排名解析,稳定可靠选择指南