【架构设计】模块化-面向接口编程

2024-06-24 05:12

本文主要是介绍【架构设计】模块化-面向接口编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模块化的优势

  1. 结构清晰:业务独立,代码实现分离
  2. 便于协作:耦合度低,不会影响团队其他成员的开发进度
  3. 便于维护:各模块管理自身代码、布局、资源,不影响主工程

模块化的特点

高内聚,低耦合

常见的模块化方法

  1. 所有模块都放在一个工程里实现
  2. 每个模块都放在一个独立工程中实现

模块的划分

从高到低

  1. 业务层
  2. 平台能力层
  3. 基础层

模块间的通信

  1. 直接依赖
  2. 事件或广播通信
  3. 路由通信
  4. 面向接口通信

具体实现

直接依赖

实现简单,耦合严重,不方便维护与开发。

事件和广播通信

EventBus:事件总线型通信框架,十分灵活,采用注解方式实现,但是难以追溯事件。

广播:一个模块中发送广播数据,感兴趣的模块进行注册广播接收数据。使用这种方式,资源开销会较大。

总结:

事件通信、广播都比较灵活,并且模块之间无偶尔度。但是,代码的可读性差,难以追溯事件,不推荐。

路由通信

模块与模块之间不存在依赖关系,而是各自运作

面向接口编程

核心思想是,先定义底层接口模块,也就是通信的协议与功能约定,是提供方实现对应的功能与能力。

在架构开发过程中,无需关注具体实现,开发中可以通过接口快速制定协议,与提供能力的API。

面向接口编程的好处

灵活性高,无具体依赖,实现层可以任意更改与切换。

面向接口编程的步骤

  1. 定义接口
  2. 提供方实现接口
  3. 使用方都通过服务工厂获取服务使用

为什么有了路由通信,还需要使用面向接口编程呢?

路由通信,虽然解决了耦合的问题,但是调用的方法都是静态的。对于传参与返回值只能是基本类型。若是对象需要进行序列化和反序列化,就会对性能产生一定的影响。所以,需要使用面向接口。比如:一个读卡的操作,业务层需要对它进行开关、暂停等操作,通过接口可以很好的返回一个服务控制器,然后直接进行相应的操作即可。

总结:

通过路由通信,可以很好的解决模块间耦合,但是拿不到对象无法持续交互,并且需要序列化,而通过面向接口编程,可以很好的解决这一点,并且代码的可读性较高。但是面向接口又会存在一定的耦合性,也就是依赖了服务侧的API,但是对于收益来说还是值得的。

所以,路由通信+面向接口编程,是比较优秀的解法。

这篇关于【架构设计】模块化-面向接口编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089250

相关文章

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

IPython小白教程:提升你的Python交互式编程技巧,通俗易懂!

IPython是一个增强的Python交互式shell,它提供了丰富的功能和便捷的交互方式,使得Python开发和数据分析工作更加高效。本文将详细介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython由Fernando Pérez于2001年创建,旨在提供一个更高效的Python交互式编程环境。 2. IPyt

从《深入设计模式》一书中学到的编程智慧

软件设计原则   优秀设计的特征   在开始学习实际的模式前,让我们来看看软件架构的设计过程,了解一下需要达成目标与需要尽量避免的陷阱。 代码复用 无论是开发何种软件产品,成本和时间都最重要的两个维度。较短的开发时间意味着可比竞争对手更早进入市场; 较低的开发成本意味着能够留出更多营销资金,因此能更广泛地覆盖潜在客户。 代码复用是减少开发成本时最常用的方式之一。其意图

基于Spring Boot的企业级应用架构设计

基于Spring Boot的企业级应用架构设计 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我想和大家分享一下基于Spring Boot的企业级应用架构设计,希望对大家有所帮助。 一、Spring Boot概述 Spring Boot是由Pivotal团队提供的全新框架,它简化了Spring应用程序的创建和开发过程。

Java并发编程—阻塞队列源码分析

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。   在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了D

剑指offer—编程题7(用两个栈实现一个队列)

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 代码如下: [java]  view plain copy print ? public class Test07 {       /**       * 用两个栈模拟的队列       *

linux常用API接口

linux常用API接口 文章目录 linux常用API接口1.应用层内存映射mmap取消内存映射munmap终端打印可用方式1.puts 函数2.文件操作函数 fprintf3.字符输出函数 putchar4.fwrite 函数 2.内核层 1.应用层 内存映射mmap mmap 是一个用于内存映射的系统调用,它可以将一个文件或设备中的内容映射到进程的地址空间中,允许程