“你好,阿米戈!还是我。我想让换个角度向你介绍接口。你看,大多数情况下,类是一个特定对象的模型。通过比较,接口更像是对象的能力或角色,而不是对象本身。”

例如,汽车、自行车、摩托车和车轮就是类和对象最好的例子。但是它们的能力,例如“我可以移动”,“我可以载人”,以及“我可以停放”则可以理解为接口。请考虑以下示例:
Java 语言代码 | 说明 |
---|---|
|
相当于移动能力。 |
|
— 相当于移动能力。 |
|
— 相当于载货能力。 |
|
— 车轮 (Wheel) 类。有移动能力。 |
|
— 汽车 (Car) 类。有移动能力,可以由人类驾驶并装载货物。 |
|
— 滑板 (Skatebaord) 类。有移动能力,可以由人类控制。 |
接口可以让程序员的生活轻松许多。程序经常有成千上万的对象,成百上千的类,和多个接口(角色)。角色数量不多,但它们的组合方式(类)可以有很多种。
重点就是你不需要写代码去定义与其他类的交互。你唯一要做的就是定义与角色(接口)的交互。
假如你是一个机器人制造师。你手下有很多机器人,每个机器人都掌握了多项技能。假如你急需要砌墙。你只要召集所有掌握 build(砌墙)技能的机器人,命令它们去砌墙。你不用去关心具体是哪个机器人去砌墙。即使它是个机器喷水壶,只要它会砌墙,就派它去。下面就是它在代码里的工作原理:
Java 语言代码 | 说明 |
---|---|
|
— 能够“砌墙 (build a wall)”。理解“砌墙 (build a wall)”命令(有合适的方法)。 |
|
— 有此技能的机器人。
— 浇水壶不能砌墙(它不会实施 WallBuilder 接口)。 |
|
— 我们如何下达砌墙命令? |
“听上去很有趣。我从没想过接口是如此有趣的话题。”
“不止这样!如果再加上多态,效果会更令人震撼。”
GO TO FULL VERSION