迭代器模式(Iterator)
发表于|更新于|设计模式
|总字数:69|阅读时长:1分钟|浏览量:
📖 关于迭代器模式
迭代器模式是一种行为设计模式,它通过提供统一的遍历接口,解耦集合数据的存储结构与遍历逻辑,使客户端无需了解集合内部实现即可访问元素。
文章作者: Mozi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Moziの个人博客!
相关推荐
2025-03-13
策略模式
1. 什么是策略模式?策略模式(Strategy Pattern) 是一种行为型设计模式,通过定义一组可互换的算法族,并将每个算法封装成独立类,使得算法可以独立于客户端变化。其核心是将算法与使用场景解耦,避免复杂的条件分支,提升系统扩展性。 📜 设计原则体现符合 开闭原则(新增策略无需修改已有代码)、单一职责原则(每个策略类只负责一个算法) 2. 核心思想 核心点 说明 算法抽象化 通过接口定义算法规范,隐藏具体实现细节 动态替换 运行时通过注入不同策略对象切换算法(如:设置不同的折扣策略) 消除条件分支 用多态代替 if-else/switch-case,使代码更简洁 3. 代码案例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// 1. 策略接口(定义算法规范)public interface DiscountStrategy { void applyDiscount(double...
2025-03-29
单列设计模式
单例设计模式 单例设计模式(Singleton Design Pattern)是一种创建型设计模式,其核心目标是确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式适用于需要全局唯一对象的场景,例如配置管理、日志记录、线程池、数据库连接池等 核心思想 私有化构造函数:防止外部通过 new 关键字直接创建实例。 静态实例:在类内部维护一个静态的实例。 全局访问点:通过静态方法(如 getInstance())提供对唯一实例的访问。 实现方式根据实例化的时机和线程安全的处理方式,单例模式有多种实现方法: 1. 饿汉式(Eager Initialization) 特点:类加载时就初始化实例。 优点:线程安全,实现简单。 缺点:可能造成资源浪费(实例未被使用时也占用内存) 123456789public class Singleton { private static final Singleton instance = new Singleton(); private Singleton() {} ...
2025-03-29
Template
一、模板设计模式的核心思想 模板设计模式(Template Method Pattern)的核心是 定义一个算法的骨架,将某些步骤延迟到子类中实现,使得子类可以在不改变算法整体结构的情况下,重新定义某些步骤的具体逻辑。 核心要点: 固定流程:父类定义算法的主要步骤(如“烧水→冲泡→倒入杯子→加调料”)。 可变细节:子类实现具体的步骤(如“如何冲泡茶叶”或“加什么调料”)。 控制反转:父类控制流程,子类填充细节。 二、Java 实现模板模式的步骤1. 定义抽象类(模板类) 模板方法:用 final 修饰,定义算法的流程(防止子类覆盖流程)。 抽象方法:用 abstract 修饰,表示必须由子类实现的方法。 具体方法:父类提供默认实现的方法(如公共步骤)。 钩子方法(可选):提供默认逻辑的方法,子类可选择性覆盖(用于控制流程分支)。 1234567891011121314151617181920212223242526272829303132public abstract class AbstractClass { // 模板方法(final...
2025-03-19
mybatis 学习笔记
Mybatis环境: JDK 1.8 Mysql 5.7 maven 3.6.3 IDEA 2020.2 SSM框架:配置文件的。 最好的方式:看官网文档; 1、简介1.1、什么是Mybatis MyBatis 是一款优秀的**持久层框架** 它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。 2013年11月迁移到Github。 如何获得Mybatis? maven仓库: 123456<!--...
2025-03-14
Java Lambda表达式使用指南
一、Lambda 表达式的基础1. 什么是 Lambda? Lambda 表达式是 Java 8 引入的一种 匿名函数(没有名称的函数),用于简化 函数式接口(FunctionalInterface)的实现。它的核心目标是让代码更简洁,尤其是在处理函数式编程和集合操作时。 2. 为什么需要 Lambda? 替代匿名内部类:传统方式实现接口需要大量样板代码。 函数式编程:支持将函数作为参数传递,或作为返回值。 代码简洁:用更少的代码表达相同的逻辑。 二、Lambda 的语法详解1. 基本语法结构1// (参数列表)->{代码体 } 参数列表:与接口中抽象方法的参数一致。 箭头符号 ->:分隔参数和 Lambda 主体。 代码体:可以是单行代码,也可以是多行代码块。 2. 简化规则 场景 简化写法 原始写法 参数类型可推断 (a, b) -> a + b (int a, int b) -> { return a + b; } 单个参数 x -> x * x (x) -> {...
2025-03-21
如何看懂Java字节码
1. 字节码基础概念 什么是字节码:Java 源代码(.java)编译后生成的中间代码(.class),由 JVM 执行。 文件结构:遵循 JVM 规范,包含魔数、版本号、常量池、类信息、方法表等。 指令集:基于栈的虚拟机指令,例如 iload(加载整型)、invokevirtual(调用方法)等。 2. 工具准备查看字节码的常用工具 javap(JDK 自带): 1javap -c -v YourClass.class # 反编译并显示详细字节码 -c:输出指令码。 -v:显示附加信息(常量池、行号表等)。 IDE 插件: IntelliJ IDEA:安装 Bytecode Viewer 插件(右键类文件 → View → Show Bytecode)。 Eclipse:使用 Bytecode Outline 插件。 图形化工具: JClassLib:可视化分析 .class 文件。 JD-GUI:反编译为近似 Java 代码(但非原始字节码)。 3. 字节码文件结构关键组成部分 魔数(Magic Number):前 4 字节为...
评论
公告
This is my Blog
