【问题标题】:From whom abstraction hides implementation? [duplicate]抽象对谁隐藏了实现? [复制]
【发布时间】:2020-12-11 10:34:00
【问题描述】:

我知道架构,我们如何使用接口和抽象类来实现抽象。 但是向谁隐藏了实现?

作为开发人员,任何人都可以单击该方法并查看为这些抽象方法提供实现的类。

作为用户,他只会面对 UI,所以无论如何他都不会看到代码。

那么我的问题是我们向谁隐藏了实现?

【问题讨论】:

  • 我们不是出于安全考虑而隐藏它,而是为了阻止人们编写依赖于实现细节的代码:stackoverflow.com/questions/383947/…
  • 有时作为开发人员,您将从事一个大项目。还会有其他开发者参与,“隐藏实现”也会让其他人更难误改数据。
  • @tgdavies 根据具体情况,这实际上可能是一个安全问题,即使在 Java 中也是如此。
  • 将世界划分为开发者用户是误导;所有开发人员都是其他开发人员工作的用户。在一个复杂的应用程序中,我通常是一个片段的开发者,然后我会转过身来从另一层消费,依次数次。

标签: java interface abstract-class abstraction


【解决方案1】:

我们对接口的客户隐藏了它,这样他们就不会依赖于可能会改变的东西。接口的客户端是一段调用接口的代码。

假设我写了一个堆栈接口:

interface Stack {
  push(String s);
  String pop();
}

和一个实现:

class StackImpl {
  public List contents;
  public void push(String s) {
     ...
  }
  ...
}

如果客户端使用 StackImpl,他们可能会开始直接访问 contents,这意味着我无法在不破坏所有客户端的情况下更改实现以使用数组。 如果他们只使用Stack,我们可以在不影响客户端的情况下改进实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 2021-07-24
    • 2018-11-23
    • 2017-03-20
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多