什么是胖接口?

时间:2011-08-16 19:52:10

标签: c++

Ciao,我在电影行业工作,模拟和应用工作室效果。我可以问一下什么是胖界面,因为我在网上听到有人说这个?

编辑:Nicol Bolas说的是here(我相信非常好的指针)

4 个答案:

答案 0 :(得分:6)

非常简单的解释是here

  

胖接口方法[...]:除了核心服务(属于瘦接口的一部分)之外,它还提供了一组丰富的服务,可满足客户端代码的常见需求。显然,对于这些类,需要编写的客户端代码量较小。

     

我们什么时候应该使用胖接口?如果一个类预计寿命很长,或者一个类预计会有很多客户端,那么它应该提供一个胖接口。

答案 1 :(得分:6)

  

胖接口 - 一个具有更多成员函数和朋友的接口,而不是逻辑上必需的接口。 TC ++ PL 24.4.3   source

答案 2 :(得分:2)

Maxim引用Stroustrup的词汇表:

  

胖接口 - 一个具有更多成员函数和朋友的接口,而不是逻辑上必需的接口。 TC ++ PL 24.4.3

Maxim没有提供任何解释,这个问题的其他现有答案误解了上述内容 - 或者没有Stroustrup引用该术语本身 - 意味着一个可以说是过多成员的界面。

实际上 不是关于成员数 ,而是 成员是否对所有实施都有意义

Stroustrup的词汇表中没有明确说明的那个微妙方面,但至少在旧版本的TC ++ PL中我很清楚 - 在文本中使用的术语很清楚。一旦你理解了差异,词汇表条目显然与它一致,但“比逻辑上更必要的成员函数和朋友”是一个应该从每个实现的角度应用的测试。逻辑接口。 (我的理解也是supported by Wikipedia,无论价值多少; -o。)

特别是当你有多个实现的接口,并且某些接口动作仅对某些实现有意义时,那么你有一个胖接口,你可以在其中请求主动实现做一些它没有希望的事情这样做,你必须 使用一些“不支持”的发现或报告 使界面复杂化,这很快就会使 更难写可靠的客户代码

例如,如果您有Shape基类以及派生的CircleSquare类,并考虑添加double get_radius() const成员:您可以这样做并拥有它如果在throw上调用NaN-1,则会返回Squarelet firstFloatValue = (first?.text as NSString).floatValue let secondFloatValue = (second?.text as NSString).floatValue 之类的标记值。您将拥有一个胖接口。

当然,这样一个令人回味的术语将被其他人所接受,意味着他们认为它应该意味着什么,所以毫不奇怪,网络包含更简单的大于必要的界面用法的例子,如证据所示通过relaxxx的答案中的链接,但我怀疑更多人猜测的意思而不是“受过教育”关于计算科学文献中的先前使用....

答案 3 :(得分:1)

具有比真正必要的更多方法或朋友的界面。