文/xuld
面向接口设计,基本步骤为:
1. 使用面向对象的方法,确定要研究的实体对象,以及对象之间的关系。
2. 根据对象之间的关系,确定对象必需的成员,即接口。
3. 实现所有接口,在实现接口时所需要的工具函数单独放到一个静态类,而非对象本身。
举例,现在需要设计一个计算器,它将拥有计算 + - * / 运算符的能力。
1. 确定要研究的实体对象。
// 这是对象。
class Computer {
}
2. 确定对象必需的成员。
class Computer {
// 这是接口。
int compute(int left, char operator, int right) {
}
}
3. 实现方法。
class Computer {
int compute(int left, Operator operator, int right) {
// 实现接口时,不会改变原有类的设计,而是单独提取工具类库。
switch(operator) {
case '+':
return ComputerHelper.add(left, right);
case '-':
return ComputerHelper.sub(left, right);
case '*':
return ComputerHelper.mul(left, right);
case '/':
return ComputerHelper.div(left, right);
}
}
}
static class ComputerHelper {
static int add(int left, int right) { return left + right; }
static int sub(int left, int right) { return left - right; }
static int mul(int left, int right) { return left * right; }
static int div(int left, int right) { return left / right; }
}
和面向对象的区别:
1.面向对象中,类内部封装大量实现逻辑。面向接口中实体类是不可再拆分的最小逻辑单位,实现逻辑不位于类内部。
2.面向对象中,类代表一个完整的对象。而面向接口中类代表对象的一个片面。例如人这个对象,在面向接口中,可以分成动物和用户两种实体,它们直接共享一个接口而非对象。
面向接口的优势:
在面向接口中,对象以及对象的目标是非常明确的,通过对象的关系链可以很清晰地理解整体的构架图,而不会受到各个实现逻辑的干扰。
同时,部分逻辑的改变不导致整个项目重构。
浙公网安备 33010602011771号