首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >封装原理

封装原理
EN

Stack Overflow用户
提问于 2008-11-18 01:34:11
回答 3查看 2K关注 0票数 3

有一些面向对象的工程原则,它规定了“一个类应该只知道它作为参数的类的契约,或者它使用的任何内部契约。”

在C++中的反例是:

代码语言:javascript
复制
Foo::bar( Baz* baz)
{
  baz()->blargh()->pants()->soil();  // this is bad, Foo knows about blarghs and pants
}

这个原则有名字吗?而且,实际的原则,而不是我上面的解释会更好地看到。

EN

回答 3

Stack Overflow用户

发布于 2008-11-18 01:43:14

这可能会编译,也可能不会编译(由于baz指针后面的圆括号),但您的示例至少违反了我能想到的一个原则。它违反了德米特定律(我相信,也被称为节俭定律)。主要原则可以在这里找到:S.O.L.I.D. Principles

除此之外,我不确定您所描述的内容是否有特定的名称。你可以在维基百科上查到德米特定律。

票数 0
EN

Stack Overflow用户

发布于 2008-11-18 01:51:11

看看Robert Martin's SOLID principles吧。具体地说,看看Single responsibility Principle。在你的例子中复杂的依赖链看起来像是破坏了SRP。

封装本身并不是一个原则。这是实现各种原则的一部分。以及继承、多态性和其他更模糊的面向对象特性。

票数 0
EN

Stack Overflow用户

发布于 2008-11-27 09:25:15

我在这里要说的是,良好的封装有助于减少coupling --除了显而易见的以外,这对于任何像样的封装来说都是一个很好的目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/297589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档