黑盒与白盒重复使用

时间:2008-09-19 02:28:19

标签: oop

使用黑盒重用而不是白盒重用有什么优缺点?

4 个答案:

答案 0 :(得分:8)

根据我的经验,白盒重用通常是通过继承完成的,黑盒子是通过组合完成的。

白盒重复使用

Pro:您可以根据具体情况自定义模块,这样可以在更多情况下重复使用 Con:您现在拥有自定义结果,因此会增加您的代码复杂性。

黑匣子重用

亲:简洁和清洁 骗局:很多时候,这是不可能的

判决:

我尽可能喜欢Black Box。

答案 1 :(得分:3)

白盒:

的优点:

  • 简单(非常自然的概念)
  • 你有更多的控制权

缺点:

  • 需要内在的知识 组件内部
  • 可能难以实现(OO继承约束)
    有时会导致破坏\不正确的继承链

黑盒:

的优点:

  • 低耦合(给出后期绑定和其他好东西)

缺点:

  • 不明显(代码难以理解)
  • 接口比类更脆弱(即接口与继承)

答案 2 :(得分:2)

我不确定这些具体术语是什么意思,所以在继续之前我会先定义它们是什么:

  • 黑盒重用是在不同的项目中使用未经修改的类/函数/代码
  • 白盒重用是从一个项目中获取类/函数/代码并对其进行修改以满足另一个项目的需要。

黑盒重用的优点是,一旦代码被编写,调试和测试,您可以在不同情况下无数次重复使用它。缺点是真正的黑盒可重用代码很少,并且需要花费时间和精力来格式化API并调用代码并使其与黑盒方法一致(没有上下文泄漏)。

白盒重用的优点在于,您确实可以多次使用您的代码,而无需先从原始项目中解脱出来。您只需复制和修改即可。这种类型的重用更为常见,但它也有一些缺点。大多数情况下,如果您在一个实现中发现错误,则需要检查以确保它在所有其他实现中已得到修复。如果它们经常发生分歧,这可能很困难。

答案 3 :(得分:1)

@Kyle,

黑盒重用意味着您在不知道内部组件的情况下使用组件。你所拥有的只是一个组件接口。

白盒重用意味着您知道如何实现组件。通常,白盒重用意味着类继承。

相关问题