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

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

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁