avatar
文章
33
标签
60
分类
0
主页
博文
  • 分类
  • 标签
  • 归档
生活
  • 分享
  • 相册
  • 音乐
  • 影视
友链
留言板
关于笔者
frostfishc
主页
博文
  • 分类
  • 标签
  • 归档
生活
  • 分享
  • 相册
  • 音乐
  • 影视
友链
留言板
关于笔者

frostfishc

设计模式——策略模式
发表于2026-01-23
策略模式(Strategy Pattern)详解什么是策略模式策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。 策略模式解决的问题策略模式主要解决以下问题: 消除条件语句:避免使用大量的 if-else 或 switch-case 语句来选择不同的算法 算法的动态切换:允许在运行时动态地切换算法 算法的封装:将算法的实现细节封装起来,对客户端隐藏 代码复用:通过接口复用不同的算法实现 遵循开闭原则:可以在不修改现有代码的情况下添加新的算法 策略模式的好处 灵活性:可以轻松切换不同的算法实现 可维护性:每个算法都有自己的类,职责单一,易于维护 可扩展性:可以通过添加新的策略类来扩展功能 可读性:避免了复杂的条件判断,代码结构清晰 符合设计原则:遵循开闭原则和单一职责原则 策略模式的结构策略模式包含以下几个角色: 策略接口(Strategy):定义所有支持的算法的公共接口 具体策略(Concrete Strategy):实现策略接口的具体算法 上下文(Context):持有一个策略对象的引...
Java 8 新特性
发表于2026-01-23
Java 8 新特性详解Java 8 是 Java 语言的一个重要版本,于 2014 年 3 月发布。它引入了许多新特性,这些特性不仅改变了 Java 代码的编写方式,也解决了之前版本中存在的一些问题。本文将详细介绍 Java 8 的主要新特性,包括它们的概念、解决的问题、代码示例以及应用场景。 一、Lambda 表达式概念Lambda 表达式是一种匿名函数,它允许我们将函数作为参数传递给方法,或者将代码作为数据处理。Lambda 表达式的语法简洁明了,使代码更加紧凑。 解决的问题 代码冗余:之前的匿名内部类代码冗长,Lambda 表达式提供了更简洁的语法。 函数式编程:Java 8 之前,Java 是一种面向对象的语言,不支持函数式编程。Lambda 表达式引入了函数式编程的思想。 可读性差:匿名内部类的代码可读性差,Lambda 表达式使代码更加清晰。 语法12345(parameters) -> expression// 或(parameters) -> { statements;} 代码示例基本用法1234567891011// ...
设计模式六大原则
发表于2026-01-22
设计模式六大原则详解设计模式的六大原则是软件设计的基础,它们为我们提供了一套指导原则,帮助我们设计出更加灵活、可维护、可扩展的软件系统。本文将详细阐述这六大原则,包括它们的概念、解决的问题、适用场景以及代码示例。 一、单一职责原则 (Single Responsibility Principle, SRP)概念单一职责原则:一个类应该只负责一项职责,或者说,一个类只应该有一个引起它变化的原因。 解决的问题 职责过多:一个类承担了过多的职责,导致类变得复杂,难以维护。 耦合度高:当一个职责发生变化时,可能会影响到其他职责,导致系统变得脆弱。 可维护性差:职责过多的类难以理解和维护,测试也变得困难。 适用场景 类的职责划分:当一个类承担了多个职责时,应该考虑将其拆分为多个类。 方法的职责划分:当一个方法承担了多个职责时,应该考虑将其拆分为多个方法。 模块的职责划分:当一个模块承担了多个职责时,应该考虑将其拆分为多个模块。 代码示例违反单一职责原则的示例12345678910111213141516171819202122// 违反单一职责原则的类:同时负责用户管理和日志记录pub...
设计模式——中介者模式
发表于2026-01-22
中介者模式详解什么是中介者模式?中介者模式(Mediator Pattern)是一种行为型设计模式,它定义了一个中介对象,用于封装一组对象之间的交互,使这些对象不需要直接相互引用,从而降低它们之间的耦合度。 核心概念 Mediator(中介者):定义同事对象之间交互的接口,维护同事对象的引用。 ConcreteMediator(具体中介者):实现中介者接口,协调同事对象之间的交互。 Colleague(同事):定义与其他同事对象交互的接口,维护中介者的引用。 ConcreteColleague(具体同事):实现同事接口,通过中介者与其他同事对象交互。 中介者模式的UML图12345678910111213141516+----------------+ +----------------+| Mediator |<------| Colleague |+----------------+ +----------------+| +mediate() | | -mediator || +regist...
设计模式——命令模式
发表于2026-01-22
命令模式详解什么是命令模式?命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使你可以用不同的请求参数化客户端,支持可撤销操作、队列化请求以及日志记录等功能。 核心概念 Command(命令):定义执行操作的接口,包含一个执行方法。 ConcreteCommand(具体命令):实现命令接口,绑定接收者和动作,调用接收者的方法执行操作。 Receiver(接收者):执行命令的实际对象,知道如何执行与命令相关的操作。 Invoker(调用者):要求命令执行请求,持有命令对象。 Client(客户端):创建具体命令对象并设置其接收者。 命令模式的UML图12345678910111213141516171819202122+----------------+ +----------------+| Command |<------| Invoker |+----------------+ +----------------+| +execute() | | -comma...
设计模式——责任链模式
发表于2026-01-22
责任链模式详解什么是责任链模式?责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许将请求沿着处理者链进行传递,直到有一个处理者处理该请求为止。每个处理者都包含对下一个处理者的引用,形成一条链。 核心概念 Handler(处理者):定义处理请求的接口,包含处理请求的方法和设置下一个处理者的方法。 ConcreteHandler(具体处理者):实现处理者接口,处理它所负责的请求,如果不能处理则将请求传递给下一个处理者。 Client(客户端):创建处理者链并向链头的处理者提交请求。 责任链模式的UML图1234567891011121314+----------------+ +----------------+| Handler |<------| Handler |+----------------+ +----------------+| -successor | | +handleRequest()|| +setSuccessor()| ...
设计模式——观察者模式
发表于2026-01-22
观察者模式详解什么是观察者模式?观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象状态发生变化时,所有依赖它的对象都会自动收到通知并更新。 核心概念 Subject(主题/被观察者):维护一组观察者对象,提供添加和删除观察者的方法,当状态变化时通知所有观察者。 Observer(观察者):定义接收通知的接口,当主题状态变化时更新自己。 ConcreteSubject(具体主题):实现主题接口,维护状态,当状态变化时通知观察者。 ConcreteObserver(具体观察者):实现观察者接口,存储与主题相关的状态,当收到通知时更新自己。 观察者模式的UML图12345678910111213141516+----------------+ +----------------+| Subject |<------| Observer |+----------------+ +----------------+| +attach() | ...
Redis数据结构
发表于2026-01-21
Redis 数据结构详解什么是 Redis?Redis(Remote Dictionary Server)是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,这使得它非常灵活和强大。 Redis 支持的数据结构Redis 支持以下主要数据结构: 字符串(String) 列表(List) 集合(Set) 有序集合(Sorted Set / ZSet) 哈希表(Hash) 位图(Bitmap) HyperLogLog 地理空间索引(Geospatial Index) 详细介绍每个数据结构1. 字符串(String)字符串是 Redis 最基本的数据结构,可以存储任何类型的字符串,包括二进制数据。单个字符串的最大长度为 512 MB。 常用命令及时间复杂度 命令 功能 时间复杂度 SET key value 设置键值对 O(1) GET key 获取值 O(1) INCR key 自增 1 O(1) INCRBY key increment 自增指定值 O(1) DECR key 自减 1 O...
C#标准库的介绍和使用
发表于2026-01-21
C# 标准库详解什么是 C# 标准库?C# 标准库是 .NET 平台的核心组成部分,提供了丰富的类和方法,用于开发各种类型的应用程序。它包含在 .NET Framework、.NET Core 和 .NET 5+ 中,为 C# 程序员提供了强大的工具集。 C# 标准库的组成C# 标准库主要由以下几个部分组成: 基础类型库:提供基本数据类型和通用工具 集合库:提供各种数据结构 IO 库:处理文件和流操作 网络库:提供网络通信功能 多线程库:支持并发编程 反射库:提供类型信息和动态操作 序列化库:支持对象的序列化和反序列化 加密库:提供安全加密功能 正则表达式库:处理字符串模式匹配 XML 库:处理 XML 数据 LINQ:语言集成查询 任务并行库:高级并行编程 WPF/WinForms:GUI 开发(仅限 Windows) 常用库的详细介绍1. 基础类型库基础类型库位于 System 命名空间,提供了基本数据类型和通用工具类。 常用类和方法 类/方法 功能 使用示例 Object 所有类型的基类 object obj = new object();...
C++ STL的介绍和使用
发表于2026-01-21
C++ STL 标准库详解什么是 STL?STL(Standard Template Library,标准模板库)是 C++ 标准库的重要组成部分,它提供了一组通用的模板类和函数,用于实现常见的数据结构和算法。STL 的设计理念是泛型编程,通过模板技术实现了数据结构和算法的高度复用。 STL 的组成部分STL 主要由以下六个部分组成: 容器(Containers):存储数据的对象 迭代器(Iterators):用于遍历容器中的元素 算法(Algorithms):操作容器中元素的函数 函数对象(Functors):具有函数行为的对象 适配器(Adapters):修改其他组件接口的组件 分配器(Allocators):负责内存分配和释放 常用容器1. 序列容器序列容器按照线性顺序存储元素,支持随机访问或顺序访问。 1.1 vectorvector 是最常用的序列容器,它是一个动态数组,支持随机访问。 常用函数: 函数 功能 时间复杂度 push_back() 在末尾添加元素 均摊 O(1) pop_back() 删除末尾元素 O(1) size() 返回元素个...
1234
avatar
frostfish22
文章
33
标签
60
分类
0
Follow Me
公告
This is my Blog
最新文章
C++的auto与decltype2026-02-04
C++虚函数与纯虚函数2026-02-04
SpringBoot内置工具类2026-01-31
Unity--Vector类2026-01-30
Unity--Transform类2026-01-30
标签
开放封闭原则 并发编程 标准库 方法引用 单一职责原则 函数指针 Python 纯虚函数 Unity 性能 默认方法 auto SpringBoot, Java, 注解 操作系统 回调函数 协程 多线程 Docker Dockerfile 虚函数 数据结构 面向对象 Spring Boot Java 8 里氏替换原则 Redis 泛型 JVM 算法 接口隔离原则 设计模式 JavaScript 容器 Optional STL 容器化 编程范式 日期时间API Lambda表达式 .NET
归档
  • 二月 2026 2
  • 一月 2026 20
  • 九月 2025 11
网站信息
文章数目 :
33
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By frostfish22框架 Hexo 7.3.0|主题 Butterfly 5.4.3