我知道——我不能,但是。
我希望所有将实现我的接口的类都具有相同的所有者(通常在构造函数中定义)。这样做的最佳做法是什么?
我应该使用一些基本的抽象类还是类似的东西?
我知道——我不能,但是。
我希望所有将实现我的接口的类都具有相同的所有者(通常在构造函数中定义)。这样做的最佳做法是什么?
我应该使用一些基本的抽象类还是类似的东西?
接口定义了实现者和消费者之间的契约。
该合同的一部分由编译器强制执行。例如,接口的所有实现都具有特定名称的必要功能,这些功能采用特定的参数。
但是编译器没有强制执行接口的另一部分。这是接口文档中描述的合同的一部分。您可以决定告诉所有实施者他们必须遵守哪些规则就足够了。许多图书馆采取这种立场。Windows API 就是一个突出的例子。
如果您对通过代码强制执行死心塌地,那么界面将无济于事。您需要在代码中表达约束的东西,在这种情况下,这将需要实现。这意味着你需要使用一个类。一个(几乎)抽象基类可以完成它。该类的唯一具体部分将强制执行所有权约束。该类的其余部分将是一系列抽象虚拟方法。这不是 Delphi 关键字所暗示的接口。但是,它是语义方面的接口。
当然,您可以选择在一个共同的祖先中实现接口,或者至少为实现该接口的类有一个共同的祖先。但是,您不能通过界面强制执行此操作。接口没有构造函数,并且接口不能强制执行哪个类可以或不能实现它。
我认为最好的选择是Owner
通过接口公开一个属性。这样,您至少可以通过接口获得所有者,并且您将强制实现类至少实现该属性。顺便说一句,允许接口具有返回对象或具有对象参数的属性和方法。