Design patterns 对象耦合
假设我分别有类A、B和C的doA()、doB()和doC()方法 除非我错了,否则doA()方法应该属于类A。它必须从类A执行。如果对A负责的方法doA()存在于类B中,则类A耦合到B的服务。这也代表了低内聚和高耦合Design patterns 对象耦合,design-patterns,coupling,cohesion,Design Patterns,Coupling,Cohesion,假设我分别有类A、B和C的doA()、doB()和doC()方法 除非我错了,否则doA()方法应该属于类A。它必须从类A执行。如果对A负责的方法doA()存在于类B中,则类A耦合到B的服务。这也代表了低内聚和高耦合 我的推理正确吗?如果一个类的所有方法都对其所有成员变量进行操作,则该类具有最大的内聚性 public class MyClass { private int value1; private int value2; private int value3;
我的推理正确吗?如果一个类的所有方法都对其所有成员变量进行操作,则该类具有最大的内聚性
public class MyClass
{
private int value1;
private int value2;
private int value3;
public int Method1()
{
return value1 + value2;
}
public int Method2()
{
return value1 - value2;
}
// doesn't belong on this class
public int Method3()
{
return value3 * 2;
}
}
耦合有两种形式:
public class MyClass
{
public void Method1()
{
var c = new MyOtherClass();
c.DoSomething();
}
}
public class MyClass
{
public void Method1()
{
var c = new MyOtherClass();
var size = c.Members.Size;
...
}
}
public class MyClass
{
public void Method1()
{
var c = new MyOtherClass();
c.DoSomething();
}
}
public class MyClass
{
public void Method1()
{
var c = new MyOtherClass();
var size = c.Members.Size;
...
}
}
在这种情况下,
MyClass
不仅与MyOtherClass
相耦合,而且与MyOtherClass
的结构相耦合,这就是你遇到麻烦的地方,你的代码变得僵硬而脆弱。告诉我们更多;doA()与类的关系实际上做了什么?它是创建A还是消费A或更新A还是什么?A类是信息专家。它是一个棋盘对象。doA()表示getSquare()方法。B类表示正方形对象。