松耦合设计

     

如何按照功能设计模块包?

88 3K

下图是一个高耦合、低相干性的两个包调用设计:┌──────────────────────────────────┐     ┌──────────────────────────────┐│  pl.

Spring Modulith 1.0 GA发布

434 2K

我很荣幸地代表 Spring 社区和所有做出贡献的人宣布 Spring Modulith 1.0 GA 正式发布。5 年多前,Modulith 还是一个研发辅助项目,2022 年成为 Spring 的.

生成式 AI 的模式语言

361

GPT-4之于皮尔士符号学就像冯·诺依曼计算机之于布尔逻辑。 然而,不同之处在于GPT-4的架构师(与冯·诺依曼不同)并不了解皮尔士符号学。为何需要符号学(Semiotics)?语义学不行吗?语义学的.

抽象是昂贵的 - specbranch

924 5K

当你建立一个计算机系统的时候,一些小事情就开始出现了: 也许一个数据库查询对于你正在建立的功能来说是尴尬的, 或者你发现你的服务器在传输数千兆字节的十六进制ASCII数据时陷入困境, 或者你的应用程序.

编写易于删除的代码 - ploeh

1257 1 14K
如何编写易于更改的代码?朝更方便地删除代码方向努力。“您可以删除部分而不重写其他部分的系统通常称为松散耦合” - 特福你会认为删除代码是世界上最简单的事情,但事实并非如此。想象一个代码库,其中的依赖图.

分布式单体的六大病症

1733 1

当公式的组织架构及其代码被拆分以后,但仍然存在紧密耦合时,就会出现分布式单体。这已经成为一个问题,因为系统的规模增加,单体的所有部分都需要一起管理,这会放慢开发速度并增加任何变化的风险。能够识别何时处.

Zephyr是一个类似OSGI的Java插件框架

1576

Zephyr 是一个基于Java的开源插件框架,具有智能依赖管理、模块化设计和占用空间小的特点。Zephyr 智能管理插件生命周期的各个方面,包括类加载、启动/停止顺序、更新等。Zephyr 仅重 1.

反射意味隐秘的耦合 - yegor256

1016 2K

当您的代码动态更改自身时,就会发生反射式编程(或反射)。例如,一个类的方法,当我们调用它时,会向该类添加一个新方法(也称为猴子补丁)。Java、Python、PHP、JavaScript都有这个“强大.

用无上下文的Go语言实现HTTP服务

658 9K

许多Go开发者,尤其是新开发者,发现一个不明显的问题是,我到底该如何把所有我需要的东西都传到我的处理程序中?我们没有像Java或C那样花哨的控制反转系统。 http.处理程序是静态签名,所以我不能只传.

从Monolith到微服务:理论与实践 - Kent Beck

1276 1

我们如何才能快速地从整体变为微服务?无法回答这个问题。首先,“迅速”就在窗外。你一个月都没弄糟。您将不会在一个月内修复它。其次,您希望从微服务中获得一些您目前无法获得的好处。那有什么好处?微服务不是重.

分裂中的NodeJS模块:为什么CommonJS和ES模块无法相处? - Dan Fabulich

2392 2K

自从Node诞生以来,Node模块就被编写为CommonJS模块。我们require()用来导入它们。当实现供他人使用的模块时,我们可以exports通过设置定义“命名导出”:module.expor.

高聚合低耦合 - theregister

1736 1

我们都喜欢内聚,讨厌耦合(高聚合低耦合),关于内聚和耦合的标准建议是,设计应努力使内聚最大化并最小化耦合。这是一个很好的口头禅,但是在没有很好地理解真正意图的情况下,这常常是一种误导,或者被认为是学术.

能够自动分析出Java应用中相互依赖程度的工具:Jarviz -Expedia

2645 1

Jarviz是为Java应用程序设计的依赖性分析工具。Jarviz可以提供跨工件的Java方法之间的耦合的完整图。由于一个类中的非私有方法可以被其他类访问,因此方法调用可以相互缠结,从而在彼此之间建立.

无服务器可能导致代码进入分布式意大利面条糨糊2.0新时代 - TechRepublic

1157

人们通常不知道微服务需要独立的自治。例如各种服务共享一个数据库;另一个问题是,服务之间通过RPC/Restful进行网络之间的同步调用链太长。这些都是分布式意大利面条一样的糨糊结构,这种架构并没有引起.

软件Bug、耦合以及因果推理 - Michael Feathers

1641 1

当你思考是否“是A引起C”?然后您意识到是A导致B然后导致C”,然后又会想到“也许A和B引起C”,然后您看到一个模糊轮廓,并想知道这个隐藏的轮廓是否在A,B和C存在之前就已经存在了。众说纷纭:系统思考.

Mathias Verraes:软件设计中,越小越好,粒度越细越好往往是一种坏建议

2637 1

在软件设计中,“越小越好”几乎普遍是坏建议,例如针对数据库分区,消息大小,μsvcs,有界上下文,类名,方法一致性等。一些关键业务逻辑会越过这些细粒度边界,并导致实施不当。小粒度事物看起来很简单,因为.

DDD与敏捷非常类似,它们都喜欢哲学、思维方式、原则与规则。 - jamesmh

1929

dddesign就像agile。许多人认为这与低级的具体实现细节和策略有关。但是,实际上,两者或多或少都像是一种思考软件和业务问题的方式。他们喜欢哲学...思维方式...原则与规则...。它们的影响在.

GRASP之低耦合模式 - Kamil Grzybek

1472

问题:如何减少变化的影响?如何支持低依赖性和增加重用?解决方案:分配职责以使(不必要的)耦合保持低水平。使用此原则来评估替代方案。耦合是衡量一个元素如何与另一个元素相关的度量。更高的耦合意味一个元件更.

重用或复用会导致耦合,微服务是宁可重复也不耦合 - Victor Rentea

2459 2

微服务避免了代码重用,其理念是:宁可代码重复,也要彻底避免耦合,因为重用意味着耦合,微服务架构是完全分离的。进化的架构!所以,DRY原则并不适用微服务。Microservices eschew cod.

IBM架构师分享:极简主义软件架构 - Neal Hu

1601 1

从构建大规模多区域分布式系统中汲取的经验教训!在设计系统时,软件架构师通常需要选择各种依赖关系 - 基础架构,身份验证,存储,当我第一次开始在IBM担任软件架构职责时,我倾向于选择完成工作的依赖项,但.

低耦合GRASP模式

938 8K
问题如何支持低依赖性,低变化影响并增加重用?解决方案分配责任以使耦合保持低水平。关于低耦合的要点 “工件”(类,模块,组件)之间的依赖性低。 模块之间不应该有太多的依赖关系,即使有依赖关系,也应该通.

好的代码很容易删除!

1639 4K

编程是从浪费生命中学到的可怕教训,编写易于删除但不易扩展的代码。“每一行代码都是在没有理由的情况下编写的,有自己的弱点,并且偶然间会被删除” Jean-Paul Sartre的ANSI C编程。编写的.

CQRS与规范模式

2405 1 2K

这是一篇关于两个DDD模式如何相互矛盾的文章。这两种领域驱动设计模式 - CQRS和规范模式 - 是相互矛盾。 不仅仅轻微矛盾,他们在最根本的方面存在分歧。让我们首先回顾一下他们的定义。 CQRS模式.

测试和发现模块之间耦合的有效手段

1688 1 3K

虽然我们使用SpringBoot实现微服务,但是在一个微服务中还是有可能塞入很多模块;同时从单体向微服务过程中,只有先将单体切分成模块以后,这些模块之间的依赖越来越少,这些模块才能逐个独立成微服务。有.

在设计模式中是怎样达到弱耦合的?

1 1448

在设计模式中是怎样达到弱耦合的?请各路高人解答一下吧,谢谢了!.

还想谈谈IOC。。。

3 1346 1

今天看POJOs IN ACTION书中有类似这样一段话“传统的J2EE应用程序使用JNDI作为一个组件访问另外一个组件的依据,比如JNDI访问EJB组件,JNDI访问Datasource获取服务器上.

JAVA中使用接口实现松耦合

9 5618 5 3K

松耦合就是降低系统部件和部件之间的耦合性,也就是降低部件的依赖性,使得部件之间相对独立,这样对于日后系统的维护及扩展都是很有好处的,然而在J2EE领域,为实现松耦合出现的技术可谓让人眼花缭乱,这.

松耦合真是条任重道远的路

9 3136

松耦合很有意思,越学越带劲啊。只是觉得这条路真的还是蛮长的。感觉松耦合会损失系统的性能,损失系统的可读性(增加了复杂性),但是也能增加系统的灵活性,扩展性。这是不是一种取舍?我说得对么?.

关于表现层、业务层、持久层及他们所包含的对象之间的关系的理解,高手指点

1 3574 5

我自己在做一个小项目,表现层用的是struts,用hibernate封装JDBC代码,最后端用的数据库。在实际做的过程中,遇到了一个问题:就是数据在各层之间传递的问题,原来没有接触过类似的问题,下面是.

软件最大的追求是什么?

27 6355

http://www.jdon.com/artichect/coupling.htm松耦合一个反义词“紧耦合”,从我们学会玩编程这个玩具开始起,我们就面临两种选择:一种朴素的、无需训练的、近似自然的“.