Oop 黑盒与白盒重用

Oop 黑盒与白盒重用,oop,Oop,与白盒重用相比,使用黑盒重用的优点/缺点是什么?白盒: 优点: 简单(非常自然的概念) 你对事情有更多的控制权 缺点: 需要内在的知识 部件内部构件 可能难以实现(OO继承约束) 有时会导致断开\不正确的继承链 黑匣子: 优点: 低耦合(提供后期绑定和其他好处) 缺点: 不明显(代码更难理解) 接口比类更脆弱(即接口与继承) 我不确定这些特定术语的含义,因此在继续之前,我将尝试定义它们: 黑盒重用是在不同的项目中使用未修改的类/函数/代码 白盒重用是从一个项目中获取一个类/函数/

与白盒重用相比,使用黑盒重用的优点/缺点是什么?

白盒:

优点:

  • 简单(非常自然的概念)
  • 你对事情有更多的控制权
缺点:

  • 需要内在的知识 部件内部构件
  • 可能难以实现(OO继承约束)
    有时会导致断开\不正确的继承链
黑匣子:

优点:

  • 低耦合(提供后期绑定和其他好处)
缺点:

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

我不确定这些特定术语的含义,因此在继续之前,我将尝试定义它们:

  • 黑盒重用是在不同的项目中使用未修改的类/函数/代码
  • 白盒重用是从一个项目中获取一个类/函数/代码,并对其进行修改以适应另一个项目的需要
黑盒重用的优点是,一旦代码被编写、调试和测试,您就可以在不同的环境中无数次地重用它。缺点是真正的黑盒可重用代码很少,需要花费时间和精力来格式化API和调用代码,并使其与黑盒方法一致(没有上下文泄漏)

白盒重用的优点是,您确实可以多次使用代码,而不必首先将其从原始项目中解救出来。你只要简单地复制和修改,你就可以上路了。这种类型的重用更为常见,但也有一些缺点。大多数情况下,如果您在一个实现中发现一个bug,则需要检查以确保它在所有其他实现中都已修复。如果他们像经常发生的那样分歧很大,这可能会很困难。

@Kyle

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


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

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

白盒再利用 Pro:您可以自定义模块以适应特定情况,这允许在更多情况下重用
缺点:您现在拥有定制的结果,因此它增加了代码的复杂性

黑盒重用 优点:简单和清洁
缺点:很多时候这是不可能的

判决:
只要可能,我更喜欢黑匣子。

我当时猜错了。我仍然认为我的答案更一般地适用于重用,所以我会继续回答,但感谢您的澄清。只是想知道,您是否使用过IoC容器?我曾在一个使用DI系统的大型项目中工作过,可以说,当您拥有越来越多的松耦合组件时,要找出损坏的组件是一件非常困难的事情:)参考:GoF p19和术语表。