黑盒与白盒重用
时间:2020-03-06 14:24:26 来源:igfitidea点击:
使用黑盒重用而不是白盒重用的优点/缺点是什么?
解决方案
白盒:
优点:
- 简单(非常自然的概念)
- 你对事情有更多的控制权
缺点:
- 需要有关组件内部的内在知识
- 可能难以实现(OO继承约束),有时会导致损坏\错误的继承链
黑盒子:
优点:
- 低耦合(提供后期绑定和其他好处)
缺点:
- 不明显(代码很难理解)
- 接口比类更脆弱(即接口vs继承)
我不确定这些特定术语的含义,因此在继续之前,我将先确定它们的含义:
- 黑盒重用使用的是在其他项目中未修改的类/函数/代码
- 白盒重用是从一个项目中获取类/功能/代码,并对其进行修改以适合另一个项目的需求。
黑盒重用的优点是,一旦编写,调试和测试了代码,就可以在不同情况下无数次重用它。不利之处在于,真正可重复使用的黑盒代码很少见,需要花费时间和精力来格式化API和调用代码,并使之与黑盒方法保持一致(不会泄漏上下文)。
白盒重用的优点是,我们确实可以多次使用代码,而不必首先从原始项目中解脱出来。我们只需复制和修改就可以了。这种重用类型更为常见,但也有一些缺点。通常,如果在一个实现中发现错误,则需要检查以确保在所有其他实现中均已修复该错误。如果它们之间经常发生很大的分歧,这可能会很困难。
@Kyle,
黑盒重用意味着我们在不了解组件内部的情况下使用组件。我们所拥有的只是一个组件接口。
白盒重用意味着我们知道如何实现组件。通常,白盒重用意味着类继承。
以我的经验,白盒重用通常是通过继承完成的,黑盒是通过合成完成的。
优点:我们可以自定义模块以适合特定情况,这可以在更多情况下重用
缺点:我们现在拥有定制的结果,因此会增加代码的复杂性。
优点:简洁明了
缺点:很多时候只是不可能
裁定:
我会尽可能选择"黑匣子"。