有人能帮我吗,我读了一些Java紧耦合和松耦合的文章。我看了好几段YouTube视频和文章,对松散耦合有一定的怀疑,但仍然无法理解某些要点。我会解释我所理解的和让我困惑的。
在松散耦合中,我们限制类之间的直接耦合。但在紧密耦合中,我们注定要去上课。让我们举个例子。我有一个主类和另一个名为Apple的不同类。我在Main类中创建了这个类的一个实例
Apple apple =new Apple();
//Apple is tightly coupled to Main class
apple.eat();
//If eat method signature is Changed to drink in the Apple class of course we need to change the method name here in Main class also right?.
让我们看看松耦合
class interface Fruits{
void drink();
}
Class Apple implements Fruits {
@Override
public void drink (){
// Printing some message;
}
}
class Main{
public static void main(String [] args){
Fruits apple = new Apple ();
//is this loose coupled
apple.drink();
}
}
如果我将松散耦合中的方法签名从“喝”更改为“倒”,我需要在三个不同的地方更改代码。
这里使用松耦合有什么意义?在紧密耦合中,一旦修改了耦合类(Apple),我就不得不更新主类。在松耦合中,我也在做同样的过程。使用它有什么意义?
例如,通过松耦合,我能感觉到的唯一好处就是接口引用类型
紧耦合代码
class Main {
//boiler plate code
Apple apple = new Apple();
}
将来如果我创建Mango类,我需要在主类中创建另一个对象,比如Mango-Mango=new Mango()
松耦合代码
class Main {
//boiler plate code
Fruits apple =new Apple():
//In future if i Change Apple() to Mango() no error will occur here because of the interface reference type(Fruits).
}
接口中的代码可扩展性是什么?如果我引入一个新的方法签名,所有依赖项都会被破坏,并迫使我们实现新方法。那么,如何在不破坏现有代码的情况下安全地扩展接口呢
请帮我理解这个水果类比。
首先,你应该检查这两个原则接口隔离原则和依赖倒置原则。这取决于你的问题。
让我们支持你的问题。
我想如果你再创造一层,你应该明白它是什么。
让我们假设你有一个水果出版社的课程。
-紧密耦合。
class FruitPress {
private Apple apple;
public FruitPress(Apple fruit){
this.apple = fruit;
}
public press() {
apple.press();
}
}
水果压榨课取决于苹果课。因此,水果出版社与苹果紧密结合。
-松耦合
class FruitPress {
private Fruit fruit;
public FruitPress(Fruit fruit){
this.fruit = fruit;
}
public press() {
fruit.press();
}
}
你的水果新闻课现在是松散耦合的。
现在创建一个Main类。如果您不使用松散耦合,您必须为您的问题实现两个presser类(ApplePresser、OrangePresser)。但是现在我们有一个实现。
class Main {
public static void main(String [] args){
FruitPress applePresser = new FruitPress(new Apple());
FruitPress orangePresser = new FruitPress(new Orange());
//doing something.
}
}
在一次技术采访中,我被问及项目的凝聚力和耦合性。我详细解释了它们的定义,尽管我没有像他说的那样正确回答问题的第二部分。 “我们如何在一个项目中同时实现高度内聚和松散耦合的设计,请解释这种方法应该如何在一个整体项目中实现?” 我回答说这两个目标是矛盾的,所以我们需要找出每个项目或模块的最佳选择,但我无法提供全面的答案。 如果有人能帮我,我将不胜感激。
本文向大家介绍Java中的耦合,包括了Java中的耦合的使用技巧和注意事项,需要的朋友参考一下 耦合是指另一个对象对一个对象的使用。也可以称为协作。一个对象与另一个对象之间的依赖关系可以完成一些任务,可以分为以下两种类型: 紧密耦合 -当对象创建要使用的对象时,则为紧密耦合情况。由于主要对象创建了对象本身,因此无法从外部将其更改为易于将其标记为紧密耦合的对象。 松散耦合 -当对象从外部获取要使用的
假设我们有一个带有s的表示一行注释。这些笔记存储在某个地方(本地数据库、网络等),每次调用时,都会根据存储的数据绘制正确数量的s。 现在,假设用户想要删除注释,解析特定 返回到其存储实体的最佳方式是什么? 目前,我知道的唯一方法是使用< code >视图。标签,并有一些管理器将它转换成数据实体,但它看起来相当混乱。 还有其他选择吗?
本文向大家介绍Python的Django框架中的URL配置与松耦合,包括了Python的Django框架中的URL配置与松耦合的使用技巧和注意事项,需要的朋友参考一下 现在是好时机来指出Django和URL配置背后的哲学: 松耦合 原则。 简单的说,松耦合是一个 重要的保证互换性的软件开发方法。 Django的URL配置就是一个很好的例子。 在Django的应用程序中,URL的定义和视图函数之间是
在客户端服务器应用程序上工作,在服务器端,我有一个面向客户端的服务组件,它拦截来自客户端的所有套接字请求,扫描消息后,它通过消息总线路由到不同的服务,因此它们是松散耦合的。 类似这样: 问题是,一旦服务完成了业务逻辑,就需要将回复发送回客户端,但通过“请求处理程序服务”,因此来自所有服务的所有回复消息都通过单个服务组件,即“请求处理程序服务”,因为我没有ChannelHandleContext对象
本文向大家介绍什么是耦合?相关面试题,主要包含被问及什么是耦合?时的应答技巧和注意事项,需要的朋友参考一下 组件之间依赖关系强度的度量被称为耦合。好的设计总是高内聚和低耦合的。