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

单一原则+干湿分离,让你的架构能力起飞

# 概念

软件单一原则(Single Responsibility Principle,SRP)是面向对象编程中五大基本设计原则之一。它指每个软件模块或类都应该只负责一个单一的功能或责任。

  1. 高内聚低耦合

  2. 实现代码可维护性

干湿分离是一种建筑设计和室内装修的方法,主要目的是将"干区"和"湿区"进行物理隔离,以提高空间利用率和使用效率。

  1. 提高空间利用率 

  2. 改善使用体验 

  3. 便于管理和维护 

  4. 增强安全性

看似两个不相干的主题,但是从工程角度是如此的相似相通,单一原则在实践过程中容易走样:

  1. 懒:懒拆分, 懒抽象

  2. 怕:没有“继承”,没人知道背景,不敢动,不敢抽象 

  3. 差:不具备这样的能力

# 详细

在工程界,有样板间(Pattern), 脚手架(Scaffold)辅助,即使复杂如上海中心这样的工程,终是普通的水泥工垒砌起来。

在软件架构中,以设计范式(pattern)为道,以实践工具为术,可以大大减缓软件架构的腐败,降低在软件架构演进过程熵值扩散。

所以软件架构里面的干湿分离, 其实直接在代码目录隔离(参考早期大家习惯把后缀 IT的测试类标志为集成测试); 这也算遵循&扩展标准,其实很早也在行业内实践了,如rails/grails 里面的COC: Convention over Configuration  \  Clean Code :-) , 所以你可以看到些 “main” 之外目录:

  1. wire: 协议目录 

  2. stub: 服务端代码 

  3. trait: 数据库操作辅助代码

  4. ...

凡事都有事前,事中,事后,基本三个切入点进行控制, 来自archguard 给了很好的解释:(摘自:archguard)

核心理念:三态模型 + 双环守护

  • 设计态:目标架构。通过 DSL(领域特定语言) + 架构工作台来构建 。

  • 开发态:实现架构。关注于:可视化 + 自定义分析 + 架构治理。

  • 运行态:运行架构。结合 APM 工具,构建完整的分析链。

https://archguard.org/

图片

最终达到 "天人合一":

Arch ⇋ Code ⇋ Document

# ApiHug 思路

  1. 设计态:DSL 定义(目录,包结构,值对象,领域对象,枚举,错误...) + 可视化

  2. 开发态: 基于成熟企业开发,编译 Lint,  服务编织(静态分析) + 可视化

  3. 运行态:APM,  Bootstrap 校验, Actuator

# 预告

  1. 1.0.0 SDK 预备发布

  2. 一键迁移老项目

  3. Domain Knowledge AI 集成

  4. ...

图片

API 设计工具千万家,ApiHug才是真的爱大家

💝 不玩心跳、擦边,只有实打实的爱!

⛔ 不是更强的 postman、jmeter, xxxx!

🥳 ApiHug 提供API 设计到实现的新范式!

ApiHug 准则:

  1. 📐 设计先行:  Design First

  2. 📑 协议驱动:Specification Driven

  3. 🗺️ 单一信任源: Single Source of Truth

  4. ❤️ 开发同理心: Development Empathy

ApiHug:

  1. 无服务: 一切尽在本地, 或者您的内部 Repository

  2. 无强依赖: 遵循行业最佳、最成熟实践、可插拔 

  3. 无隐藏:一切尽公开透明

📐设计先行

通过统一的API 设计元语(DSL, domain specific language), 让API 设计更语言化(Describe);实现高度的一致化,和高复用。

📑协议驱动

OAS (OpenAPI specification), 是 ApiHug世界的 "金科玉律", 严格保证定义 ↔ 实现之间同构(isomorphism)态射。

🗺️单一信任源

实现 API 从:蓝图→施工→测试→落地,不走样, 不变形,不改味。极致沟通效率和极低信任成本。

❤️ 开发同理心

置身于多种角色,感同身受,在快和慢,现在和将来,个体和团队上综合平衡,极具同理心是ApiHug 人文基础,她不仅仅是一段代码,一个工具,一种方式。

We Build What We Love & Love What We Built

https://apihug.com/docs/start/what-is-apihug

开启愉快开发之旅:https://apihug.com/docs/start

00. 预安装

  1. JDK 17+ OpenJDK or Oracle

  2. Gradle 8+

  3. IDEA 2022+

  4. ApiHug - API design Copilot  IDEA plugin 市场

01. 插件安装

  1. File

  2. Settings

  3. Plugin

  4. Search ApiHug

  5. Install & Restart

图片

02. Project Wizard

ApiHug - API design Copilot 提供了一个非常友好的项目启动模板,按照步骤一路点下来就可以。

01- 开始ApiHug项目

  1. File

  2. New -> Project

  3. ApiHug

图片

02-项目设置

  1. Project settings

  2. package

  3. name

  4. description

  5. SDK Settings

  6. version

  7. DB Vendor

  8. Cache

  9. Port

图片

03-Spring 设置

标准Spring 配置和 starter.spring.io 一样:

  1. 选择类型

  2. 选择你需要的模块,比如: Spring Web

图片

最后 点击: Create -> Open Project  就可以打开项目啦!

04-开启项目

跟着IDEA的引导:

  1. 以 Gradle 方式加载项目, 如果没有检查通知Notification栏目,可能你隐藏了;

  2. 两个模块 demo-app-proto & demo-app 应该被gradle自动识别出来。

图片

04.1-Wire
  1. 打开 README.md > 0. Build All

  2. 找到那段脚本贴到控制台上: Terminal

  3. 回车 Enter 执行

  4. 检查模块 demo-app-proto 目录 main > wire 里面内容和更新

图片

04.2-Stub
  1. 打开 README.md > 2. Build Stub (Individual)

  2. 同理找到那段命令行,贴到控制台 Terminal

  3. 按回车 Enter 执行

  4. 检查模块 demo-app 目录 main > stub 里内容和更新:

图片

04.3-Boot
  1. 打开 README.md > 3. Run Application

  2. 找到对于命令,贴到 Terminal

  3. 回车 Enter 执行

  4. 检查命令行输出 Log demo-app

图片

----------------------------------------------------------
Application 'demo-app' is running! Access URLs:
Local                             http://localhost:18089/External                          http://192.168.0.115:18089/OAS                               http://192.168.0.115:18089/v3/api-docsActuator                          http://192.168.0.115:18089/managementApi-Errors                        http://192.168.0.115:18089/hope/meta/errorsApi-Dictionaries                  http://192.168.0.115:18089/hope/meta/dictionariesApi-Authorities                   http://192.168.0.115:18089/hope/meta/authoritiesProfile(s)                        dev
04.4-查看 OAS
  1. 从控制台命令行上找到对应的URL

  2. 在浏览器(Chrome)输出查看即可 

图片

ApiHug 工具栏

ApiHug 工具栏(Tool Window)  默认停靠在您的IDEA右侧栏, 当然您也可通过上面菜单调出 :   ApiHug > ApiHug Designer : 

图片

🥳 恭喜! 开启您愉悦的开发之旅吧!

图片

http://www.lryc.cn/news/363753.html

相关文章:

  • 如何恢复永久删除的照片?
  • 一文看懂llama2(原理模型训练)
  • Sui基金会公布2024年3–4月资助项目名单
  • Spring Security3.0.1版本
  • 网络报文协议头学习
  • 颜色与纹理
  • pytest-playwright 插件的使用
  • 基于springboot实现智慧校园之家长子系统项目【项目源码】计算机毕业设计
  • 云WAF的安全审计功能
  • 第十七章 创建Web客户端 - 其他调整
  • 学习java的日子 Day52 多表联合查询,DCL,数据类型,约束,索引,视图
  • 计算机视觉(CV)的教程、相关项目
  • mysql in 逗号分隔_数据库字段是逗号分隔的查询(FIND_IN_SET(str,strlist)方法的使用)
  • 【Python】 将日期转换为 datetime 对象在 Python 中
  • dpdk-19.11 arm64 环境适配 Mellanox CX4 网卡
  • 1141. 查询近30天活跃用户数
  • 11_JavaWeb监听器
  • jmeter常用的断言
  • Opencv Python图像处理笔记二:图像变换、卷积、形态学变换
  • 使用若依框架RuoYi前后端分离版+运行+自动生成页面进行导入进行开发+工具(完整版)
  • 开源博客项目Blog .NET Core源码学习(29:App.Hosting项目结构分析-17)
  • 2021 hnust 湖科大 计组课设 包含multisim14连线文件,报告,指导书
  • CHATGPT升级plus(已有账号前提下)
  • 通过血清拉曼光谱进行COVID-19的高效初步筛查
  • Java 性能调优与监控工具详解
  • LeetCode 1633, 122, 239
  • (十五)统计学基础练习题九(选择题T401-450)
  • 用大白话讲解下 CNN和卷积核( 百度 AI 回答 )
  • 安全生产新篇章:可燃气体报警器检验周期的国家标准解读
  • github搭建个人博客