自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 设计模式扩展:简单工厂+配置文件实现(下)

设计模式扩展:简单工厂+配置文件实现(下)

2024-10-06 16:42:38 254 1

原创 设计模式扩展:简单工厂+配置文件实现(上)

设计模式扩展:简单工厂+配置文件实现(上)

2024-10-06 14:41:37 131

原创 嵌入式设计模式:使用适配器模式实现跨平台坦克游戏

通过使用适配器模式,我们可以为不同的平台(手机、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

设计模式 设计原则 李建忠老师 PPT

李建忠老师 设计模式纵横谈视频教程(共25讲)-讲义

2025-01-06

设计模式 设计原则 李建忠老师 文档和源码

案例:观察者模式(Observer Pattern) 动机(Motivate): 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” —— 一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系,从而实现软件体系结构的松耦合。 意图(Intent): 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。——《设计模式》GOF 适用性: 1. 当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 2. 当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。 3. 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之,你不希望这些对象是紧密耦合的。 生活中的例子: 在 ATM 取款,当取款成功后,以手机、邮件、微信服务号等方式进行通知。 接下来是代码展示

2025-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除