对谁隐藏了实现的对象?

问题描述

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

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

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

那我要向谁隐藏实施程序呢?

解决方法

我们对接口的客户端隐藏了它,以使他们不依赖于可能发生变化的事物。接口的客户端是一段调用该接口的代码。

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

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

和实现:

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

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