当前位置: 首页 > news >正文

在单片机编程中充分使用抽象工厂模式,确保对象创建的限制,多使用抽象接口避免多变具体实现类

背景

在软件架构设计上追求稳定,就必须多使用稳定的抽象接口,少依赖多变的实现;具体编码时可以充分使用抽象工厂模式

举例进行详细讲解和说明抽象工厂模式在单片机开发中的应用

抽象工厂模式是一种创建型设计模式,它提供了一种方式,可以将一组相关的对象创建封装到一个工厂类中,使得客户端代码与具体对象的创建过程解耦。在单片机开发中,抽象工厂模式可以用于根据不同的配置或需求创建不同类型的硬件驱动对象。

  1. 抽象定时器驱动接口AbstractTimerDriver 结构体定义了定时器驱动的基本操作,包括启动、停止和设置周期。
  2. 抽象定时器工厂接口AbstractTimerFactory 结构体定义了创建定时器驱动对象的抽象方法。
  3. 具体定时器驱动实现:分别为平台 1 和平台 2 的外部、内部时钟源实现了具体的定时器驱动,每个驱动都实现了 AbstractTimerDriver 接口中的操作。
  4. 具体定时器工厂实现:为每个具体的定时器驱动实现了对应的工厂,每个工厂都实现了 AbstractTimerFactory 接口中的创建方法。
  5. 客户端代码clientCode 函数接受一个抽象定时器工厂指针,通过调用工厂的创建方法创建定时器驱动对象,并调用驱动的操作方法。
  6. 示例运行:在 main 函数中,演示了 4 个示例,分别使用不同平台和不同时钟源的定时器工厂创建定时器驱动对象并进行操作。

通过这种方式,我们可以根据不同的硬件平台和时钟源,使用抽象工厂模式创建不同的定时器驱动对象。

#include <stdio.h>

    // 定义抽象定时器驱动接口

    typedef struct AbstractTimerDriver

{

    void (*start)(void);

    void (*stop)(void);

    void (*setPeriod)(unsigned int period);

} AbstractTimerDriver;

// 定义抽象定时器工厂接口

typedef struct AbstractTimerFactory

{

   

相关文章:

  • 算法笔记.染色法判断二分图
  • Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解
  • Unity C#入门到实战: 启动你的第一个2D游戏项目(平台跳跃/俯视角射击) - 规划与核心玩法实现 (Day 40)
  • 【Java面试题03】Java并发编程经典面试题
  • 如何在idea中写spark程序
  • SQL Server 存储过程开发规范
  • 模电——PN结
  • ExoPlayer 中的 Timeline、Period 和 Window
  • 搭建spark yarn 模式的集群集群
  • 软链接与硬链接
  • Linux系统编程---exec簇:进程的加载与替换
  • 空间计算:开启人机交互新纪元的下一代技术范式
  • 解决 Win11/Win10 “为了对电脑进行保护,已经阻止此应用”问题
  • JAVA设计模式——(八)单例模式
  • 3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目
  • JQuery 使用技巧
  • MCP之一_MCP协议解析
  • 邦芒秘籍:面试时自我介绍主要包含四个方面
  • PyCharm 2023升级2024 版本
  • 线下CPG零售的核心:POG与销量的循环优化
  • 释新闻|西葡大停电为何规模大、恢复慢?可再生能源是罪魁祸首?
  • 企业取消“大小周”引热议,半月谈:不能将显性加班变为隐性加班
  • 李祥翔评《孔子哲学思微》︱理性秩序与美学秩序的碰撞
  • 中国黄金协会:一季度我国黄金产量同比增1.49%,黄金消费量同比降5.96%
  • 朝鲜证实出兵俄罗斯协助收复库尔斯克
  • 广州海关原党委委员、副关长刘小威被开除党籍