什么是界面臃肿?

Aly*_*Aly 4 oop anti-patterns

有人可以向我解释一下OOP中的界面膨胀是什么(最好是一个例子).

Rob*_*lls 9

天儿真好,

假设您的意思是API而不是GUI,对我来说,I/F膨胀可能会以多种方式发生.

  1. API只是不断扩展和扩展新功能,没有任何形式的隔离,所以你最终得到一个难以使用的单片头文件.
  2. 在现有API中声明的函数不断将新参数添加到其签名中,因此您必须继续升级,并且现有应用程序不向后兼容.
  3. 现有API中的函数会因非常相似的变体而过载,这会导致难以选择要使用的相关函数.

为此,您可以:

  1. 将API分离为一系列标题和库,以便您可以更轻松地控制实际需要的部分.任何内部依赖项都应该由供应商自动解决,因此用户不必通过反复试验找出依赖项,例如,当我只想使用声明的API中的函数时,我需要包含头文件wibble.h在shozbot.h头文件中.
  2. 通过在适用的情况下引入重载,使API向后兼容升级.但是您应该将重载的函数分组到类别中,例如,如果将新的重载函数集添加到现有API(例如our_api.h)以使其适应新技术(例如SOA),那么它们将在它们自己的头文件中单独提供our_api_soa.h除了现有的头文件my_api.h之外.

HTH