- 博客(14)
- 收藏
- 关注
原创 装饰器模式在嵌入式咖啡结算系统的应用
在本篇文章中,我们通过对装饰器模式概念和基本用法的讲解,结合星巴克咖啡定价策略优化的实际案例,展示了如何将这一设计模式应用于现实问题,提升系统的可扩展性和维护性。这种基于装饰器模式的设计,不仅增强了系统的可扩展性,也使得定制选项的新增和变更变得更加高效和简便。在未来的开发过程中,当面对复杂的需求和不断变化的业务逻辑时,装饰器模式将为您提供一个高效的解决方案。基于装饰器模式实现的咖啡定制功能的代码结构简洁易读,业务逻辑也非常清晰,并且如果我们需要扩展新的定制选项,只需要新增一个继承了抽象装饰类的子类即可。
2025-01-01 18:18:10
1013
原创 策略模式在新能源领域的应用
策略模式主要优点在于对“开闭原则”的完美支持,在不修改原有系统的基础上可以更换算法或者增加新的算法,它很好地管理算法族,提高了代码的复用性,是一种替换继承,避免多重条件转移语句的实现方式;策略模式(Strategy Pattern)是一种行为型设计模式,它将对象的行为与对象本身分离开来,将行为定义为一个接口,而每个具体的行为则是该接口的实现类。: 环境类 / 上下文类:上下文是依赖于接口的类(是面向策略设计的类),即上下文包含用策略(接口)声明的变量。类用于存储当前选择的策略,并提供执行策略的方法。
2025-01-01 17:21:02
953
原创 桥接模式(Bridge Pattern)在嵌入式支付系统中的应用
桥接模式是一种 **结构型设计模式**,它通过将抽象部分和实现部分分离,使得它们可以独立变化。桥接模式采用组合代替继承,避免了多层继承的复杂性,并为系统提供了更高的灵活性。抽象部分(Abstraction):定义了系统中的高层业务逻辑,并持有对实现部分的引用。实现部分(Implementor):定义了具体的功能实现接口,并由具体的实现类来完成。通过桥接模式,我们可以让每个维度(例如支付渠道和支付方式)独立变化,从而避免代码复杂度的增加。
2024-11-23 19:32:15
757
原创 嵌入式设计模式:使用适配器模式实现跨平台坦克游戏
通过使用适配器模式,我们可以为不同的平台(手机、PC、iPad)提供统一的接口,并且在这些平台上同一型号的坦克实现相同的功能,同时实现了每个型号的坦克(如T50、T65、T80)各自不同的功能。4. **使用适配器模式**:创建适配器类,根据不同的平台实例化具体实现类,并通过通用接口调用具体功能。2. **实现具体平台类**:为每个平台(手机、PC、iPad)创建具体实现类,实现通用接口。3. **实现具体坦克型号类**:为每个坦克型号创建具体实现类,实现各自的功能。#### 1. 定义通用平台接口。
2024-06-16 13:47:01
322
3
原创 使用适配器设计模式改进C语言播放器代码
在软件开发中,我们常常会遇到这样的问题:现有的代码无法直接使用在新的应用场景中。- **依赖倒置原则(DIP)**:高级模块依赖于抽象,`ExtendMediaPlayer`依赖于`MediaPlayer`接口和`AdvanceMediaPlayer`接口,而不是具体的实现。- **开放/封闭原则(OCP)**:每当我们需要支持新的文件格式时,我们都需要修改现有的代码,违反了开放/封闭原则。- **开放/封闭原则(OCP)**:系统在扩展时可以通过增加新的播放器类来支持新的格式,而不需要修改现有的代码。
2024-06-15 21:38:08
261
1
原创 观察者模式在C语言中的应用
在软件开发中,设计模式是一种被广泛接受的、经过反复测试的、用于解决在特定环境下经常出现的特定问题的解决方案。观察者模式是其中的一种,它定义了对象之间的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在本文中,我们将探讨观察者模式在C语言中的应用。我们将首先介绍如何在不使用观察者模式的情况下解决问题,然后介绍如何使用观察者模式来改进我们的解决方案。我们还将讨论使用观察者模式的优点。
2024-01-15 21:00:14
576
1
原创 C语言查找表(lookup table)的威力
查找表,顾名思义,就是用来查找信息的表。在C语言中,查找表通常是一个数组或者结构体数组,用于存储预先计算好的数据,以便快速查找。查找表的主要思想是“空间换时间”,即使用更多的内存空间来存储数据,以减少计算时间。
2023-12-11 22:39:48
3652
1
原创 探索注册机制:理解、应用与案例分析
注册机制是一种编程技巧,它允许我们在运行时动态地添加或修改程序的行为。在注册机制中,我们通常有一个注册表,用于存储一组函数或对象,这些函数或对象可以在运行时被调用或实例化。注册机制提供了一种灵活的方式来管理和解耦代码,使代码更加模块化和易于管理。
2023-12-10 18:59:53
519
3
原创 C语言空闲列表:何时使用、为什么用
空闲列表是一种数据结构,用于管理一组预先分配的对象。当我们需要一个新的对象时,我们可以从空闲列表中取出一个对象,而不需要调用内存分配函数。当我们不再需要一个对象时,我们可以将它加入到空闲列表中,而不需要调用内存释放函数。
2023-12-09 22:51:52
190
原创 链表:从基础到优化
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在这篇文章中,我们将探讨链表的三种插入方法:头插法、中间插法和尾插法,并比较它们的优缺点。然后,我们将介绍如何使用空闲指针和检测桩来优化链表的操作。
2023-12-09 14:27:48
141
1
原创 链式调用和Lambda表达式在C语言中的应用
在编程世界中,我们经常会遇到需要执行一系列操作的情况。这些操作可能包括调用多个函数,或者根据不同的条件执行不同的代码块。在这种情况下,我们通常会使用if-else语句或者switch语句来实现。然而,当我们需要处理的条件和操作变得越来越复杂时,这种方式可能会导致代码变得难以理解和维护。为了解决这个问题,一些高级语言引入了链式调用(Method Chaining)和Lambda表达式(Lambda Expressions)这两种强大的编程技术。
2023-12-03 20:17:44
232
2
原创 斐波那契数列的C语言多种实现方法(递归、循环、动态规划、矩阵乘法和公式法)
斐波那契数列是一个非常有趣的数列,它的每一项都是前两项的和,前两项分别为0和1。这个数列的前几项是:0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、1597、2584、4181、6765。这个数列有许多有趣的性质,例如,两个连续的斐波那契数之比会收敛于黄金比例,约等于1.61803399。在这篇博客中,我们将探讨如何使用C语言实现斐波那契数列,并讨论各种方法的时间复杂度。
2023-12-03 19:12:25
9046
2
设计模式 设计原则 李建忠老师 文档和源码
2025-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人