一般来说,我在这种情况下使用的方法是同时具有接口和抽象类。接口定义了接口。抽象类仅仅是一个助手。
这种方法真的不会出错。接口使您可以灵活地更改实施。抽象类为您提供了不必强制使用的样板代码和帮助程序代码,否则,如果您的方法是根据抽象类显式定义的,则这些代码就可以使用。

一般来说,我在这种情况下使用的方法是同时具有接口和抽象类。接口定义了接口。抽象类仅仅是一个助手。
这种方法真的不会出错。接口使您可以灵活地更改实施。抽象类为您提供了不必强制使用的样板代码和帮助程序代码,否则,如果您的方法是根据抽象类显式定义的,则这些代码就可以使用。