Ciao,我在电影行业工作,模拟和应用工作室效果。我可以问一下什么是胖界面,因为我在网上听到有人说这个?
编辑:Nicol Bolas说的是here(我相信非常好的指针)
答案 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
基类以及派生的Circle
和Square
类,并考虑添加double get_radius() const
成员:您可以这样做并拥有它如果在throw
上调用NaN
或-1
,则会返回Square
或let firstFloatValue = (first?.text as NSString).floatValue
let secondFloatValue = (second?.text as NSString).floatValue
之类的标记值。您将拥有一个胖接口。
当然,这样一个令人回味的术语将被其他人所接受,意味着他们认为它应该意味着什么,所以毫不奇怪,网络包含更简单的大于必要的界面用法的例子,如证据所示通过relaxxx的答案中的链接,但我怀疑更多人猜测的意思而不是“受过教育”关于计算科学文献中的先前使用....
答案 3 :(得分:1)
具有比真正必要的更多方法或朋友的界面。