我了解体系结构,了解如何使用接口和抽象类实现抽象。但是我们向谁隐藏实现?
作为开发人员,任何人都可以点击该方法,并可以看到为这些抽象方法提供实现的类。
作为用户,他将只面对UI,因此无论如何都不会看到代码。
那么我的问题是,我们对谁隐瞒了实施?
我们对接口的客户端隐藏它,这样它们就不会依赖于可能发生变化的东西。接口的客户端是一段调用接口的代码。
假设我写了一个堆栈接口:
interface Stack {
push(String s);
String pop();
}
以及一个实现:
class StackImpl {
public List contents;
public void push(String s) {
...
}
...
}
如果客户端使用StackImpl,他们可能会开始直接访问contents
,这意味着我无法在不中断所有客户端的情况下将实现更改为使用数组。如果他们只使用Stack
,我们可以在不影响客户端的情况下改进实现。