根据您的用例,您可能需要为多个用户设计。在您的示例中,如果您的汽车将由机械师和驾驶员使用,那么您不能只忽略一组用户。在这种情况下,您仍然可以使用接口抽象细节。
你可以这样设计你的对象:
interface IDrivable {
void start();
void applyBrakes();
void changeGear();
void stop();
}
interface IFixable {
void changeOil();
void adjustBrakes();
}
public class Car : IDrivable, IFixable {
// implement all the methods here
}
现在,当一个机械师想要这辆车时,你不给他一个Car
对象,而是给他一个IFixable
对象。同样,驱动程序得到一个IDrivable
对象。这可以同时为两组用户保持相关的抽象。
class Driver {
private IDrivable car;
public Driver(IDrivable car) {
this.car = car;
}
public driveCar() {
this.car.start();
this.car.accelerate();
//this is invalid because a driver should not be able to do this
this.car.changeOil();
}
}
同样,技工将无法访问接口中的方法IDrivable
。
您可以在此处阅读有关接口的更多信息。尽管这是 MSDN 链接并使用 C#,但所有主要语言都支持接口。