Design Pattern
文章平均质量分 88
Design Pattern related.
d3y1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
架构模式实现示例:分与合的具体实践
本文档提供架构设计中"分"与"合"原则的具体实现示例,包括代码片段、配置示例和实际应用场景。原创 2025-11-28 21:05:55 · 390 阅读 · 0 评论 -
架构设计模式:分与合的艺术
在软件架构设计中,"分"与"合"是两种基本且对立统一的设计哲学。"分"代表分解、分离、分布,旨在降低复杂度、提高可扩展性;"合"代表整合、聚合、统一,旨在提高效率、增强一致性。优秀的架构设计需要在二者之间找到平衡点。核心原则分的哲学分而治之:将复杂问题分解为可管理的小问题关注点分离:不同的功能由不同的组件负责故障隔离:避免单点故障影响整个系统水平扩展:通过增加实例数量提升处理能力合的艺术批量处理:将多个小任务合并处理以提高效率资源共享:多个组件共享相同的资源统一抽象:提供统一的接口屏蔽原创 2025-11-28 07:14:02 · 795 阅读 · 0 评论 -
设计模式-源码实例大全之23种设计模式全面解析
本文全面解析23种经典设计模式在主流框架和中间件中的应用,包括Spring、Kubernetes、Nginx等。设计模式分为创建型(如单例、工厂方法)、结构型(如适配器、装饰器)和行为型(如观察者、策略)三大类,每种模式在不同框架中都有典型实现。通过源码分析发现,设计模式能提供标准化解决方案、提高代码质量,并常以组合方式应用。框架设计哲学各异,如Spring强调松耦合,Kubernetes注重声明式API。实际应用中,多种模式常协同工作,如Spring Security结合组合模式、责任链模式等。原创 2025-10-07 11:47:21 · 835 阅读 · 0 评论 -
设计模式-23访问者模式 (Visitor Pattern) 源码实例大全
访问者模式是一种行为设计模式,允许在不修改对象结构的情况下定义新操作。本文通过Java标准库中的FileVisitor接口展示了模式实现,包括文件搜索访问者(FileSearchVisitor)和文件统计访问者(FileStatisticsVisitor)两个具体实现类。前者用于搜索匹配特定模式的文件,后者则统计文件数量、目录数量和文件大小等指标。该模式通过分离算法与对象结构,实现了对文件系统的高效遍历和灵活操作,同时保持代码的可扩展性。原创 2025-10-07 09:34:45 · 594 阅读 · 0 评论 -
设计模式-22备忘录模式 (Memento Pattern) 源码实例大全
摘要 备忘录模式(Memento Pattern)是一种行为设计模式,用于在不破坏封装性的前提下捕获对象内部状态并实现状态恢复。本文展示了一个基于Java序列化的备忘录模式实现,包含Memento接口、UserStateMemento具体备忘录类、UserService原发器类以及User状态类。该实现支持状态保存、历史记录管理、撤销操作和深拷贝功能,确保状态恢复时不会影响原有对象。通过日志记录和标签系统,提供了完整的操作追踪能力。原创 2025-10-06 12:11:30 · 915 阅读 · 0 评论 -
设计模式-21中介者模式 (Mediator Pattern) 源码实例大全
中介者模式摘要 中介者模式通过引入中介对象封装对象间的交互,降低耦合度。该模式在Java事件总线中典型应用包括:1) EventBus中介者接口定义注册/注销/事件发布方法;2) 具体中介者SimpleEventBus管理事件监听器映射;3) 同事类(如UserService、EmailService)通过@Subscribe注解方法响应事件,不再直接相互调用。此模式优点在于解耦同事类,使交互集中于中介者,便于维护扩展。原创 2025-10-06 12:09:54 · 800 阅读 · 0 评论 -
设计模式-20迭代器模式 (Iterator Pattern) 源码实例大全
摘要 迭代器模式(Iterator Pattern)是一种行为设计模式,提供顺序访问聚合对象元素的方法,同时隐藏其内部表示。Java标准库中实现了该模式的核心接口Iterator和Iterable,包含hasNext()、next()等基本方法。具体实现如ArrayList的Itr迭代器和LinkedList的ListItr迭代器,通过维护游标和状态来遍历集合元素。该模式支持单向/双向遍历、元素修改等操作,并通过modCount机制检测并发修改。自定义聚合类只需实现Iterable接口并提供迭代器即可支持该原创 2025-10-06 12:08:05 · 401 阅读 · 0 评论 -
设计模式-19解释器模式 (Interpreter Pattern) 源码实例大全
解释器模式摘要 解释器模式用于定义语言的文法表示并创建解释器来解释语言中的句子。该模式包含抽象表达式(RegularExpression)、终结符表达式(Character/StringLiteral)和非终结符表达式(Sequence/Alternation/Repetition)。 Java正则表达式库采用解释器模式实现,包含: 字符/字符串匹配的终结符表达式 序列、选择、重复等非终结符表达式 解释方法interpret()负责执行实际匹配逻辑 模式优势在于灵活扩展语言规则,但复杂度随文法规则增加而显著原创 2025-10-06 12:06:13 · 284 阅读 · 0 评论 -
设计模式-18责任链模式 (Chain of Responsibility Pattern) 源码实例大全
责任链模式是一种行为设计模式,让多个对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合。典型实现包括Java Servlet的过滤器链,如认证、日志和压缩过滤器。每个过滤器实现Filter接口,通过FilterChain传递请求,直到有一个过滤器处理请求或到达链尾。这种模式实现了请求处理逻辑的解耦,使各处理者独立且可灵活组合。原创 2025-10-06 12:03:35 · 391 阅读 · 0 评论 -
设计模式-17策略模式 (Strategy Pattern) 源码实例大全
策略模式是一种行为设计模式,它定义一系列算法并将其封装为独立对象,使它们可以相互替换。该模式使算法独立于使用它的客户端而变化。摘要包含: 模式定义:封装可互换的算法族,使算法独立于客户端。 核心实现要素: 策略接口(如Comparator) 具体策略类(如UserAgeComparator) 上下文类(如UserService) 典型应用场景: Java标准库的Comparator接口 ThreadFactory线程创建策略 多种排序算法的灵活切换 关键优势: 运行时动态切换算法 避免条件语句 符合开闭原则原创 2025-10-06 12:01:12 · 636 阅读 · 0 评论 -
设计模式-16状态模式 (State Pattern) 源码实例大全
状态模式是一种行为设计模式,允许对象在内部状态改变时改变其行为。本文通过Java线程状态实例展示了该模式的实现,包括NewState、RunnableState、BlockedState和TerminatedState等具体状态类,每个状态类都实现了ThreadState接口,并根据当前状态定义了不同的行为转换规则。上下文对象(ThreadContext)通过改变其状态对象来改变自身行为,使状态转换逻辑得以清晰组织。这种模式特别适用于对象行为随状态变化而变化的场景。原创 2025-10-06 11:59:03 · 973 阅读 · 0 评论 -
设计模式-15命令模式 (Command Pattern) 源码实例大全
命令模式是一种行为设计模式,它将请求封装为对象,使客户端可以参数化不同请求,支持请求排队、日志记录和撤销操作。本文展示了Java标准库中的实现实例,包括文件操作和数据库操作命令。通过Runnable接口作为命令接口,具体命令类实现执行逻辑,并由CommandExecutor作为调用者管理命令执行。这种模式解耦了请求发送者和接收者,提供了灵活的命令管理和扩展能力。原创 2025-10-06 11:56:50 · 665 阅读 · 0 评论 -
设计模式-14模板方法模式 (Template Method Pattern) 源码实例大全
摘要 模板方法模式是一种行为设计模式,它定义了算法的骨架,允许子类在不改变算法结构的情况下重定义特定步骤。该模式通过抽象类实现,包含三种方法:模板方法(定义算法结构)、基本方法(由子类实现)和钩子方法(可选覆盖)。 Java标准库中的InputStream类是该模式的典型实例,其read()方法作为基本方法由子类实现,而read(byte[])等作为模板方法提供通用逻辑。FileInputStream和ByteArrayInputStream作为具体子类,分别实现各自的read()方法,并可选择覆盖钩子方法原创 2025-10-06 11:54:32 · 570 阅读 · 0 评论 -
设计模式-13_2观察者模式 (Observer Pattern) 源码实例大全
WebSocket观察者模式实现摘要 该实现展示了WebSocket连接的观察者模式,主要包含: WebSocketObserver核心类: 管理WebSocket连接、消息处理和观察者通知 提供自动重连机制,最大重试5次 支持多种事件类型订阅(open/close/message/error等) 具体观察者示例: ChatMessageHandler:处理聊天消息,记录并显示 OnlineUserTracker:跟踪在线用户状态变化 关键功能: 消息自动解析与路由 错误处理和重连机制 多事件类型订阅支持原创 2025-10-06 11:51:09 · 981 阅读 · 0 评论 -
设计模式-13_1观察者模式 (Observer Pattern) 源码实例大全
Spring框架中的观察者模式示例:1) ApplicationEvent模式展示用户注册事件与多个监听器(邮件通知、日志记录、统计分析)的松耦合交互;2) PropertyChangeListener模式通过属性变更支持类实现对象属性变化的监听机制。两种实现都体现了观察者模式的核心思想——当主题状态变化时自动通知所有依赖对象。原创 2025-10-06 11:47:43 · 1048 阅读 · 0 评论 -
设计模式-12_2代理模式 (Proxy Pattern) 源码实例大全
摘要 代理模式在Apache Kafka中的实现展示了如何通过代理对象控制对真实对象的访问。Kafka生产者代理模式包含两种实现:日志代理(LoggingKafkaProducerProxy)记录发送消息的详细信息,包括成功/失败情况和耗时;重试代理(RetryKafkaProducerProxy)在消息发送失败时自动重试,可配置最大重试次数和延迟时间。这两种代理都实现了相同的KafkaProducer接口,在不修改原始生产者代码的情况下,为客户端提供了额外的功能,体现了代理模式的核心价值——通过中介控制访原创 2025-10-06 11:45:41 · 867 阅读 · 0 评论 -
设计模式-12_1代理模式 (Proxy Pattern) 源码实例大全
代理模式是一种结构型设计模式,为其他对象提供访问控制的中介。Spring框架中实现了两种代理方式:1) JDK动态代理,基于接口实现,示例展示了日志和事务代理;2) CGLIB代理,可代理普通类。代理模式的核心是在不修改原始对象的情况下,通过代理对象添加额外功能(如日志、事务),符合开闭原则。原创 2025-10-06 11:42:41 · 735 阅读 · 0 评论 -
设计模式-11_2享元模式 (Flyweight Pattern) 源码实例大全
享元模式通过共享对象减少内存消耗,Hibernate实体缓存是其典型应用。该模式包含享元接口(EntityRegionAccessStrategy)、具体享元(EntityRegionImpl)和享元工厂(EntityRegionAccessStrategyFactory)三个核心组件。Hibernate通过EntityRegion缓存实体对象,实现对象复用,其中ReadOnlyEntityRegionAccessStrategy等策略类处理不同访问方式。这种设计有效减少了重复对象的创建,提高了系统性能,尤原创 2025-10-06 00:11:09 · 1046 阅读 · 0 评论 -
设计模式-11_1享元模式 (Flyweight Pattern) 源码实例大全
享元模式通过共享相似对象来减少内存消耗,提升系统性能。Spring框架中典型应用包括:1) 字符串池(String.intern())实现字符串共享;2) Integer缓存池(-128~127)复用常用数字对象;3) Bean元数据(BeanMetadataAttribute)共享配置信息。这些实现通过内部缓存机制,在频繁创建相似对象时显著降低资源开销,如字符串比较时直接使用==判断引用而非内容,Integer.valueOf()优先返回缓存实例。该模式特别适用于存在大量细粒度重复对象的场景。原创 2025-10-06 00:07:28 · 316 阅读 · 0 评论 -
设计模式-10外观模式 (Facade Pattern) 源码实例大全
外观模式是一种结构型设计模式,为复杂的子系统提供统一的高层接口,简化客户端调用。Spring框架的ApplicationContext是典型实现,通过ClassPathXmlApplicationContext和AnnotationConfigApplicationContext等具体外观类,封装了底层BeanFactory、资源加载、依赖注入等复杂逻辑,提供简洁的配置管理接口。该模式降低了系统耦合度,使客户端仅需与外观对象交互,无需了解内部子系统细节。原创 2025-10-05 20:58:35 · 632 阅读 · 0 评论 -
设计模式-09_2装饰器模式 (Decorator Pattern) 源码实例大全
装饰器模式在Netty中的应用主要体现在ChannelHandler的设计上。Netty通过ChannelHandler接口定义核心功能,ChannelHandlerAdapter作为装饰器基类提供基本实现,而具体装饰器如LoggingHandler则动态添加日志功能。这种设计允许在不修改原有ChannelHandler的情况下,通过装饰器灵活地扩展功能(如日志记录),体现了装饰器模式"动态添加职责"的核心思想,相比继承更加灵活和可扩展。原创 2025-10-05 20:56:42 · 797 阅读 · 0 评论 -
设计模式-09_1装饰器模式 (Decorator Pattern) 源码实例大全
装饰器模式是一种动态地为对象添加额外职责的设计模式,比继承更灵活。Spring框架中的InputStream类体系是典型实现:InputStream作为抽象组件,FileInputStream是具体组件,而FilterInputStream作为装饰器基类,通过组合方式包装其他InputStream对象。这种结构允许在不修改原有类的情况下,动态地添加新功能,如缓冲、压缩等特性,体现了开闭原则。原创 2025-10-05 20:53:37 · 186 阅读 · 0 评论 -
设计模式-08_2组合模式 (Composite Pattern) 源码实例大全
摘要 组合模式(Composite Pattern)是一种将对象组合成树形结构的设计模式,用于表示"部分-整体"的层次结构,使客户端可以统一处理单个对象和组合对象。Python Django框架的模板系统运用了该模式,通过抽象组件Node类、叶子组件(TextNode、VariableNode)和组合组件(BlockNode、NodeList)构建模板解析树。ForNode等具体实现展示了如何处理循环逻辑,而NodeList作为容器类管理子节点集合。这种结构支持递归渲染和节点查询,体现了原创 2025-10-05 20:50:50 · 690 阅读 · 0 评论 -
设计模式-08_1组合模式 (Composite Pattern) 源码实例大全
组合模式摘要 组合模式是一种结构型设计模式,用于将对象组织成树形结构,统一处理单个对象和组合对象。该模式通过定义统一的组件接口(Component),包含叶子节点(Leaf)和组合节点(Composite)两种实现,使客户端可以一致地处理简单元素和复杂元素。Spring框架中大量应用了组合模式,如BeanDefinition体系通过GenericBeanDefinition等实现类构成层次结构,Component接口定义统一操作规范。组合模式特别适合构建具有部分-整体层次关系的系统,简化客户端代码,使添加新原创 2025-10-05 20:49:03 · 337 阅读 · 0 评论 -
设计模式-07桥接模式 (Bridge Pattern) 源码实例大全
桥接模式是一种结构型设计模式,将抽象与实现解耦,使二者可以独立变化。本文以Spring JDBC为例展示了桥接模式的应用:JdbcAccessor作为抽象部分,定义了数据库访问的通用接口;JdbcTemplate作为具体实现,通过DataSource接口桥接不同的数据库驱动实现。这种设计使得数据库访问逻辑与具体数据库实现分离,可以灵活切换不同的数据库驱动而不影响业务代码。原创 2025-10-05 20:44:33 · 810 阅读 · 0 评论 -
设计模式-06适配器模式 (Adapter Pattern) 源码实例大全
适配器模式(Adapter Pattern)是一种结构型设计模式,用于将不兼容的接口转换为可兼容的接口。Spring框架中的HandlerAdapter体系是典型应用,通过不同适配器(ServletHandlerAdapter、RequestMappingHandlerAdapter等)将各种处理器(Controller、Servlet等)统一适配为HandlerAdapter接口,使DispatcherServlet能够以统一方式调用不同处理器。这种模式增强了框架的扩展性,支持新增处理器类型而不需修改核心原创 2025-10-05 20:42:05 · 844 阅读 · 0 评论 -
设计模式-05_2原型模式 (Prototype Pattern) 源码实例大全
摘要:Apache Kafka中的ProducerRecord类展示了原型模式的实现,通过clone()方法实现对象的复制。该类提供了三种克隆方式:手动深拷贝、序列化深拷贝和JSON深拷贝,确保包含headers在内的所有属性都被完整复制。同时结合建造者模式,通过ProducerRecordBuilder实现原型对象的修改和构建。Header接口也实现了Cloneable支持深拷贝,体现了原型模式在分布式消息系统中的实际应用。原创 2025-10-05 20:40:16 · 624 阅读 · 0 评论 -
设计模式-05_1原型模式 (Prototype Pattern) 源码实例大全
摘要:原型模式通过复制现有对象创建新对象,Spring框架的BeanDefinition是典型实现。Spring的AbstractBeanDefinition抽象类实现了Cloneable接口,提供cloneBeanDefinition()方法进行深拷贝,包括构造参数、属性值等核心数据的复制。RootBeanDefinition等具体实现继承此功能,支持原型作用域的Bean创建。该模式避免了复杂的对象初始化过程,提高了对象创建效率。原创 2025-10-05 20:38:29 · 790 阅读 · 0 评论 -
设计模式-04_2建造者模式 (Builder Pattern) 源码实例大全
本文介绍了建造者模式(Builder Pattern)在PostgreSQL查询构建中的实现。该模式通过将复杂对象的构建过程分离,使得同样的构建过程可以创建不同的表示。文中提供了一个Python实现的PostgreSQL查询建造者类(PostgreSQLQueryBuilder),支持SELECT、INSERT、UPDATE和DELETE等基本SQL操作,并包含丰富的条件构建方法(如where、where_in、where_between等)。该类通过链式调用实现查询的渐进式构建,同时使用参数化查询来防止S原创 2025-10-05 20:35:28 · 793 阅读 · 0 评论 -
设计模式-04_1建造者模式 (Builder Pattern) 源码实例大全
建造者模式(Builder Pattern)将复杂对象的构建与其表示分离,使同一构建过程能创建不同表示。Spring框架中的BeanDefinitionBuilder是典型实现,通过链式方法调用逐步配置Bean定义(如设置工厂方法、构造参数、属性值等),最终生成完整的BeanDefinition对象。这种模式简化了复杂对象的创建过程,提高了代码可读性和灵活性。原创 2025-10-05 20:28:32 · 270 阅读 · 0 评论 -
设计模式-03_2抽象工厂模式 (Abstract Factory Pattern) 源码实例大全
本文介绍了TensorFlow中抽象工厂模式的应用实例,包括模型工厂和数据集工厂两种实现。模型工厂通过抽象基类ModelFactory定义了创建模型、优化器、损失函数和评估指标的接口,并提供了CNN、RNN和Transformer三种具体实现。数据集工厂DatasetFactory则抽象了数据集创建的统一接口。这种模式能够创建相关对象族而不指定具体类,提高了代码的可扩展性和可维护性,特别适合深度学习框架中需要灵活组合不同模型组件和数据管道的场景。原创 2025-10-05 20:23:03 · 993 阅读 · 0 评论 -
设计模式-03_1抽象工厂模式 (Abstract Factory Pattern) 源码实例大全
摘要 抽象工厂模式提供创建相关对象族的接口,无需指定具体类。以Spring框架为例,ApplicationContext作为抽象工厂接口,AbstractApplicationContext实现核心逻辑,包含抽象方法refreshBeanFactory()等。具体工厂如ClassPathXmlApplicationContext继承并实现这些方法,支持XML配置方式创建Bean。该模式通过抽象与具体工厂的层级设计,实现了对象创建的灵活扩展。原创 2025-10-05 20:21:34 · 483 阅读 · 0 评论 -
设计模式-02工厂方法模式(Factory Method Pattern)源码实例大全
工厂方法模式通过定义创建对象的接口,将实例化过程延迟到子类实现。Spring框架的BeanFactory是典型应用,其核心接口定义多种获取Bean的方法,而AbstractBeanFactory抽象类实现具体创建逻辑,处理单例/原型作用域、依赖检查等场景,通过doGetBean方法完成对象创建过程。该模式实现了对象创建与使用的解耦,增强了系统扩展性。原创 2025-10-05 20:16:17 · 1169 阅读 · 0 评论 -
设计模式-01单例模式(Singleton Pattern)源码实例大全
单例模式是一种确保类仅有一个实例并提供全局访问点的设计模式。本文展示了Spring和Kubernetes等框架中的单例实现:Spring的DefaultSingletonBeanRegistry使用ConcurrentHashMap管理单例Bean缓存池,并通过同步块确保线程安全;Kubernetes的RESTClient则利用Go语言的sync.Once实现线程安全的单例初始化。两种实现都体现了单例模式的核心思想,同时针对各自场景进行了优化,如Spring的多级缓存机制和Kubernetes的延迟初始化。原创 2025-10-05 20:11:38 · 633 阅读 · 0 评论 -
设计模式-23种经典设计模式比较分析总览
23种设计模式比较分析摘要 本文系统比较了23种经典设计模式,分为创建型(5种)、结构型(7种)和行为型(11种)三大类。创建型模式重点解决对象创建问题,包括单例、工厂、建造者和原型等模式;结构型模式处理类和对象组合,如适配器、桥接、装饰器等;行为型模式关注对象间通信和职责分配,如策略、观察者、状态等模式。文章通过对比表、决策树和关系图,详细分析了各模式的适用场景、核心思想和优缺点,并提供了模式选择指南。创建型模式侧重对象创建方式,结构型模式处理接口和组合关系,行为型模式解决算法封装和状态管理,完整覆盖了面原创 2025-09-16 18:25:49 · 1055 阅读 · 0 评论 -
设计模式-22解释器模式Interpreter Pattern
解释器模式是一种行为设计模式,用于定义语言的文法规则并构建解释器来处理该语言的语句。它适用于需要解释简单语言、表达式或配置文件的场景。模式包含抽象表达式接口、终结符表达式(如数字/变量)和非终结符表达式(如加减乘除运算)。通过组合这些表达式形成抽象语法树,解释器能递归地解析和执行语句。虽然该模式灵活易扩展,但仅适合文法简单的语言,复杂语言需配合解析器生成工具。原创 2025-09-16 18:17:38 · 752 阅读 · 0 评论 -
设计模式-21访问者模式Visitor Pattern
访问者模式是一种行为型设计模式,允许在不修改已有类结构的情况下添加新操作。该模式将算法与操作对象分离,适用于需要在不改变对象类的前提下定义新操作(如显示、价格计算、维护等)的场景。通过访问者接口和具体访问者实现(如ComputerPartDisplayVisitor、ComputerPartPriceVisitor),可以对复杂对象结构(如计算机部件)执行不同操作。当对象结构稳定但经常需要新增操作时,访问者模式能有效避免"污染"原有类代码。原创 2025-09-16 18:16:34 · 874 阅读 · 0 评论 -
设计模式-20模板方法模式Template Method Pattern
模板方法模式是一种行为设计模式,它定义算法框架,将可变步骤延迟到子类实现。该模式通过抽象类定义算法骨架(模板方法),其中包含固定步骤和抽象/钩子方法。子类重写这些方法以改变特定步骤,而不修改算法结构。适用于有相同流程但部分步骤不同的场景,如数据处理、文档生成等。优点包括避免代码重复、提高复用性、便于扩展,但可能增加系统复杂度。典型实现包含抽象类定义模板方法和步骤,具体子类实现可变部分。原创 2025-09-16 18:15:04 · 654 阅读 · 0 评论 -
设计模式-19策略模式Strategy Pattern
策略模式是一种行为设计模式,通过定义一系列可互换的算法并将其封装,使算法能独立于使用它的客户端而变化。该模式适用于需要动态切换不同算法或行为的场景,可避免大量条件判断语句。其核心结构包括策略接口、具体策略类和使用策略的上下文类。实现时,先定义策略接口,然后创建具体策略类实现接口方法,最后通过上下文类动态设置和切换策略。示例展示了支付系统中的多种支付策略(信用卡、PayPal、银行转账)的灵活切换,体现了策略模式的可扩展性和解耦优势。 (149字)原创 2025-09-16 18:13:48 · 881 阅读 · 0 评论 -
设计模式-18状态模式State Pattern
状态模式是一种行为设计模式,允许对象在内部状态改变时改变其行为。当对象的行为取决于状态且需要避免大量条件判断时,该模式特别有用。其核心结构包括:上下文(Context)维护当前状态,状态接口(State)定义行为,具体状态类实现不同状态下的行为。典型应用场景如自动售货机,通过状态模式可清晰管理"无硬币"、"有硬币"、"售出"等状态转换,避免复杂的条件分支,使代码更易维护和扩展。原创 2025-09-16 18:12:25 · 788 阅读 · 0 评论
分享