有一些面向对象的工程原则,它规定了“一个类应该只知道它作为参数的类的契约,或者它使用的任何内部契约。”
在C++中的反例是:
Foo::bar( Baz* baz)
{
baz()->blargh()->pants()->soil(); // this is bad, Foo knows about blarghs and pants
}这个原则有名字吗?而且,实际的原则,而不是我上面的解释会更好地看到。
发布于 2008-11-18 01:43:14
这可能会编译,也可能不会编译(由于baz指针后面的圆括号),但您的示例至少违反了我能想到的一个原则。它违反了德米特定律(我相信,也被称为节俭定律)。主要原则可以在这里找到:S.O.L.I.D. Principles
除此之外,我不确定您所描述的内容是否有特定的名称。你可以在维基百科上查到德米特定律。
发布于 2008-11-18 01:51:11
看看Robert Martin's SOLID principles吧。具体地说,看看Single responsibility Principle。在你的例子中复杂的依赖链看起来像是破坏了SRP。
封装本身并不是一个原则。这是实现各种原则的一部分。以及继承、多态性和其他更模糊的面向对象特性。
发布于 2008-11-27 09:25:15
我在这里要说的是,良好的封装有助于减少coupling --除了显而易见的以外,这对于任何像样的封装来说都是一个很好的目标。
https://stackoverflow.com/questions/297589
复制相似问题