分布式管理和集中式管理的优劣-----项目架构和配置分离

2023-11-11

模块化是不可逆转的趋势

现如今,在整个项目开发的过程中模块化以他独特的优势引领了一股项目架构潮流。灵活,可复用,后期易维护,代码逻辑清晰,所有的这些都成为了模块化开发的代名词。然而任何一种事物,只要能够被众人所认可,自然有他被认可的理由,从分工管理的角度来看的话这种模块化架构方式是有一定的哲学思想在其中的。

面向接口编程的优势

  1. 逻辑自定义复用性增强
    好多人会提到面向接口编程,我们知道接口最大的优势就是他方法的逻辑是可以自定义的,我们定义一个接口,然后通过实现该接口可以创建出无数拥有自己内部逻辑的类,最大的优势这些逻辑是由你来定的,从这个角度来看的话定义一个接口可以在很多地方得到运用,这要比你单独去创建若干个类显然要“合算”的多。

  2. 带返回值方法的回调利于封装,模块化
    接口编程的基本流程就是定义接口和抽象方法;创建实现类并在方法的实现中书写逻辑;以接口实现类的方式实例化;调用实现类中写好的方法并在外部传入参数实现数据库的操作。用一句话来总结的话就是封装逻辑,回调方法。

  3. 作为方法参数传值灵活性更强(匿名内部类)
    接口的另外一个优势就是可以作为方法的形参,和其他类型的参数不同的是,以接口为参数我们在传入具体参数值的时候就可以直接以匿名内部类的形式传入相关逻辑,这样就实现了逻辑随处可以自定义的效果,从灵活性的角度来看的话这种方式更具灵活性。
  4. 接口继承实现逻辑的组合
    接口是可以相互继承的,我们完全可以运用接口这种特点,在项目功能模块划分的时候进行有效的分类,接口的这种特点使得模块化开发更加灵活多样。(纵向继承,横向封装)

集中式管理的优劣

集中式优点:

  1. 将所有的操作都集中起来,便于配置和查询。
  2. 整合到一起管理起来更加方便。
  3. 配置项一目了然,非常直观。

缺点:

  1. 高度集中会导致相应的配置文件过于臃肿。
  2. 由于模块配置数据高度集中,无形中文件的健壮性就会大大降低(串并连原理)。
  3. 高集中不代表着高内聚。

分布管理的优劣

分布式优点

  1. 灵活性强,模块之间不会相互影响
  2. 类似电路中的并联,使得整个项目的稳定性更强

分布式缺点

  1. 模块集中程度低不利于统一管理
  2. 分散性给调试带来了不便

高内聚和低耦合

高内聚:

内聚指的是单个模块内部功能的集成程度,可以理解为密度。模块的内聚性强不等同于“大集成”,“大杂烩”。我们要事先明确一个前提,内聚说的是单个功能模块的属性特点,是对单个功能模块的性能进行优化。所以在谈到内聚和耦合的时候我们要干的第一件事情就是要对项目整体进行一个清晰的模块划分,做到没有重合,没有冗余。然后针对单个功能模块进行内聚优化。

高内聚的优点:

  1. 从模块的角度来看就是项目整体模块功能划分的更细,各司其职,各自为营。
  2. 单个模块内聚程度高 牵连的额外”类”少,不会出现牵一发而动全身的状况,这样就更利于项目后期的变更和维护。
  3. 项目整体分门别类,代码逻辑更加清晰
  4. 代码的复用性和健壮性增强,用一句话来形容就是“事不关己高高挂起”,远离是非之地,那你肯定能活的逍遥快活(健壮性)。

低耦合:

低耦合说的是模块与模块之间的一种状态,耦合即关联,耦合性高就是模块之间关联程度高,是唇亡齿寒的关系,也可以理解是电路中的串联,只要有一个模块出问题就会波及关联模块。我们追求的是一种模块各自工作,互不影响的工作状态,就好比并联电路。从项目整体稳定性而言,低耦合的优势显而易见,即便是某一块模块出现了问题也不会影响项目的其他功能。

总结:

在理解项目架构优化和模块化开发的优点的时候,我们要本着一个原则那就是最优原则,我们追求高内聚低耦合但也不是任何时候项目都必须要满足这种要求(就好比数据库设计中的忽略第三范式一样),权衡利弊找到一个最佳的平衡点,然后大胆的去对项目的功能模块进行划分,要坚信自己的想法,并用自己的行动去践行自己的创造性思维。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式管理和集中式管理的优劣-----项目架构和配置分离 的相关文章

  • NIM Server、Client交互操作过程分析——暨NIM防火墙要求

    最后更新2021 08 10 nimsh端口 从AIX 5 2 TL7开始 NIM增加了 nimsh 功能 此功能是原有NIM基于rsh协议操作的升级版 众所周知 rsh协议没有加密传输功能 安全性也很差 nimsh对此进行了升级 以提供更
  • lowbit

    lowbit用来计算二进制数 从右往左数第一个1与其后面的0组成的数 int lowbit int x return x x x 12 1100 lowbit 12 100 4 7 111 lowbit 7 1 1
  • Flutter优秀第三方常用框架

    名称 GitHub地址 下拉刷新上拉加载 EasyRefresh 下拉刷新上拉加载 PullToRefresh SharedPreferences shared preferences 中国城市选择器 city picker 设备信息 de
  • 硬盘存储知识

    存储知识 内存和外存 硬盘 1 物理磁盘类型 硬盘分为 机械硬盘 HDD 和固态硬盘 SSD 注意 买硬盘的时候要注意转速 机械硬盘是以下三种 物理磁盘类型 SATA盘 物理磁盘类型 SAS盘 物理磁盘类型 NL SAS盘 固态硬盘 物理磁
  • 微信小程序期末大作业 中草药小程序 药海拾遗

    微信小程序期末大作业 中草药小程序 药海拾遗 小程序详情如下 下载链接在文末 学习社区可以自己添加内容 点我下载资源 https download csdn net download weixin 43474701 59675965
  • 【Struts2六】ui标签之form标签及数据回显

    ui标签 用在jsp页面用于回显数据的标签 这些标签是由框架定义的 用来替代原生的标签 ui标签有
  • WPF编程,Live Charts使用说明(11)——基本折线图

    后台 using System using System Windows Controls using System Windows Media using LiveCharts using LiveCharts Wpf namespace
  • Spring整合Druid

    Druid是Java语言中最好的数据库连接池 Druid能够提供强大的监控和扩展功能 Druid是阿里巴巴开源平台上的一个项目 整个项目由数据库连接池 插件框架和SQL解析器组成 该项目主要是为了扩展JDBC的一些限制 可以让程序员实现一些
  • 厉害了|十分钟掌握python3语言特性

    看了王垠的 如何掌握所有程序语言 感触甚深 如果说程序语言有其通用规律的话 那就是语言特性 也就是这些语言的通用概念 这些概念的具体语法的形式可能都不一样 但是所内涵的功能是一致的 比如英语中的bird和汉语中鸟 其实指的都是同一种事物 关
  • python自动生成电子邮箱'@hotmail.com', '@msn.com', '@yahoo.com', '@gmail.com', '@aim.com', '@aol.com', '@mail

    def getAutoEmail self 自动生成电子邮箱 Fist email join random sample string ascii letters string digits 9 last emailList hotmail
  • 使用Docker及Docker-compose部署SpringBoot项目

    1 环境准备 Windows下安装Docker需要WSL2及Hyper v Windows家庭版没有 Linux下安装Docker 参考官方文档 Install Docker Engine Docker Documentation 根据自己
  • Poi实现Excel导出

    Poi实现Excel导出 Appache Poi提供了HSSFWorkbook操作2003版本的Excel文件 XSSFWorkbook操作2007版Excel文件 简单的具体实现在网上有很多案例可以参考学习 我就不写入门案例了 下面我会将
  • AutoML系列

    本文是对 Neural Architecture Search A Survey 的翻译 这篇Paper 很好的总结分析了 NAS 这一领域的研究进展 摘要 在过去几年中 深度学习在各种任务上 例如图像识别 语音识别和机器翻译 取得了显著进
  • 利用javascript的算术运算符获取一个数字的每位数字

  • element tree 树形控件

    组件 Element 地址 http element eleme io zh CN component tree Tree树形控件
  • 【VAR模型

    向量自回归 VAR 是一种随机过程模型 用于捕获多个时间序列之间的线性相互依赖性 VAR 模型通过允许多个进化变量来概括单变量自回归模型 AR 模型 VAR 中的所有变量都以相同的方式进入模型 每个变量都有一个方程式 根据其自身的滞后值 其
  • IBM MQ 故障诊断(一)

    说明 本文主要是针对运维人员的手册 前面部分主要是应用三板斧的方式 后面的步骤可能会发散和具体深入一些 不过也不是严格的划分 读者就当看一遍杂文的方式来看待此文吧 一 队列管理器的启停 QMGR的启停是故障诊断中遇到最多的需求之一 启动队列
  • 【C语言】可变参数列表

    文章目录 前言 一 可变参数列表是什么 二 怎么用可变参数列表 三 对于宏的深度剖析 隐式类型转换 对两个函数的重新认知 总结 前言 可变参数列表 使用起来像是数组 学习过函数栈帧的话可以发现实际上他也就是在栈区定义的一块空间当中连续访问
  • 无服务器编程语言,腾讯云之无服务器云函数运行golang程序-Go语言中文社区

    使用腾讯的 无服务器云函数启动了一个服务 用golang代码生成以太坊的私钥跟地址 genEthAddr png 无服务器云函数是什么 腾讯云的无服务器云函数 跟 aws lambda类似 把一段代码放到云函数服务器上 设定好访问路径 就可

随机推荐

  • 高等代数 多项式环(第7章)5* 结式与域

    一 结式 1 概念 2 结式与公共复根 1 多项式存在公共复根的判定 定理1 设 f x a
  • 数据结构——>单向环形链表

    单向环形链表 一 单向环形链表应用场景 二 单向环形链表介绍 三 单向环形链表代码实现 1 代码实现思路 2 代码实现 一 单向环形链表应用场景 提起单向环形链表 就不得不说约瑟夫问题 约瑟夫环 什么事约瑟夫问题呢 1 约瑟夫问题 有时也称
  • 机器学习:EM算法

    一 初识EM算法 EM算法也称期望最大化 Expectation Maximum 简称EM 算法 它是一个基础算法 是很多机器学习领域算法的基础 比如隐式马尔科夫算法 HMM 等等 EM算法是一种迭代优化策略 由于它的计算方法中每一次迭代都
  • FreeRTOS基础五:软件定时器

    软件定时器简介 软件定时器的作用 在指定的时间到来时执行指定的函数 或者以某个频率周期性地执行某个函数 被执行的函数叫做软件定时器回调函数 软件定时器由FreeRTOS内核实现 不需要硬件支持 软件定时器只有在软件定时器回调函数被调用时才需
  • 用EditPlus来编辑网页代码 写网页代码 网页软件安装包大小1.91MB JQ代码编辑软件

    如何使用EditPlus这款软件来编辑网页代码 第一步 我们先来安装这款软件 我就先分享一下这款软件 链接 https pan baidu com s 1YtMJboQ0abPTybIZMZu8Bg 提取码 jes4 第二步 等安装好这款软
  • Python GUI 设计(三)---Widget组件详解

    1 1 Canvas画布组件 Tkinter模块中的Canvas组件主要用于绘制图形 文字 设计动画等甚至也可以将其他小部件放在画布上 比如视频 它的语法格式如下 Canvas 父窗口 options 第一个参数是父窗口 表示这个画布建立在
  • STM32的RTC时钟及其相关寄存器

    1 什么是RTC时钟 RTC时钟本质上上一个定时器系统 但是其定时器的计数值最终是以2020 1 30 16 27 类似这样的形式呈现的 说白了就是它就是实时时钟 并且这个时钟不怕断电 断电后它在后备区继续计时 而后备区是有电池供电的 2
  • vscode使用remote-ssh连接远程服务器 报错:“过程试图写入的管道不存在”

    问题如题 网络上有很多解决 过程试图写入的管道不存在 的方法 笔者基本试过了一遍 也没能解决问题 这里不是指他们的方法没有用 只是能解决的问题可能不是我遇到的这种 我的解决方法是 修改配置文件的格式 就这么简单 这种格式才是正确的 从第二行
  • sqli-labs/Less-31

    欢迎界面和上一关差不多 所以我们还是使用双参数注入 首先判断第二个参数是否为数字型 输入如下 id 1 id 1 and 1 2 回显如下 所以属于字符型 然后判断是单引还是双引 输入如下 id 1 id 1 回显如下 正确回显了 所以不属
  • ^A在linux的处理

    这是hive的默认分隔符 用脚本awk或python可以把分隔符设置为 x01 在vim中选中时 用ctrl a来表示这个分隔符
  • 工业互联网+5G 发展策略研究

    本文首发于 邮电设计技术 边缘计算社区经过授权转发 摘要 工业互联网发展水平与一个国家的国际竞争力强相关 截至2020 年我国工业互联网发展初见成效 但商业模式还需要持续探索 首先探索工业互联网定义及发展情况 其次理清工业互联网与5G 关系
  • C++ DLUT 上机作业(四)

    文章目录 C DLUT上机作业 四 1 intArray 2 Goods 3 Cpoint 4 Account C DLUT上机作业 四 啥都不说 直接来 1 intArray 设计整型数组类intArray 实现若干数据的相关操作 包括构
  • React-实现循环轮播

    问题 写字体轮播的时候 不使用swiper库 使用top定位 让字体过渡上下移动 发现写成的效果就是每次播到最后一个元素后 只能突然展示第一个元素 失去了那种上下移的动过渡效果 ss 解决 import useRef useEffect u
  • K近邻思想解决字体反爬

    猫眼电影字体反爬 1 解决思路 1 1 获取对照组字体文件 按照不同字形字体的unicode得到文字与其坐标的对应关系形成可遍历的数据结构 然后处理成可计算的数组或者直接遍历出所有的坐标数据 1 2 再提取当前访问页面的自定义字体文件 取出
  • (CNN)卷积神经网络原理详解,大白话讲解卷积

    卷积到底在卷啥 卷积是什么 零基础入门神经网络的小白都会有这样的疑问 其实卷积很简单 卷积神经网络CNN 是一类包含卷积计算且具有深度结构的前馈神经网络 Feedforward Neural Networks 是深度学习 deep lear
  • 香农公式说明了什么_香农公式理解

    1948 年 香农 Shannon 用信息论的理论推导出了带宽受限且有高斯白噪 声干扰的信道的极限信息传输速率 当用此速率进行传输时 可以做到不出差错 用公式表示 则信道的极限信息传输速率 C 可表达为 C B log2 1 S N b s
  • 中小微企业如何选择网络品牌推广公司?

    有人认为品牌推广是大型企业的事情 中小微企业没有必要做品牌推广 口碑侠营销顾问则不以为然 口碑侠认为小微企业之所以还是小微企业就是因为没有做有效的品牌推广 不是他们不需要品牌推广 而是资金和团队还做不了成规模的品牌推广 如果有足够的条件开展
  • PTI:通过枢轴完成人脸投影

    paper PTI Pivotal Tuning for Latent based Editing of Real Images 2022 ACM TOG StyleGan 人脸编辑相关 人脸投影 paper code 在StyleGAN中
  • Qt Qml 多媒体播放视频(MediaPlayer)遇到的问题及解决方法

    文章目录 前言 一 视频无法播放的原因 1 目录结构 2 正确代码 二 绝对路径 相对路径 三 路径中的转义字符 测试版本 前言 Qml 多媒体播放视频开发过程中遇到的问题 记录一下 一 视频无法播放的原因 创建的Qt Quick Ui P
  • 分布式管理和集中式管理的优劣-----项目架构和配置分离

    模块化是不可逆转的趋势 模块化是不可逆转的趋势 面向接口编程的优势 集中式管理的优劣 分布管理的优劣 高内聚和低耦合 高内聚 低耦合 总结 现如今 在整个项目开发的过程中模块化以他独特的优势引领了一股项目架构潮流 灵活 可复用 后期易维护