继承两个类,分别从接口实现
Inherit two classes and implement from interface separately
我有抽象 BaseClass 和我Class 接口。我创建了两个 classes Class(在不同的命名空间中)并继承自 BaseClass。当我在 Class classes 中实现接口而不是在 BaseClass class 中实现接口是否有意义?
我不明白为什么不; subclasses 可能有不同的 IClass 实现,它们只是符合 IClass 规范。您可能有另一个未实现 IClass 的 Class 实现,因此让 BaseClass 实现它(或抽象它)并将其强加给所有人是没有意义的它 children。
这些是设计决策,而不是硬性规定,并且在很大程度上取决于您正在建模的 object space。如果某些东西对所有人 Class 都是通用的,请考虑将其作为基础 class 的一部分。如果某些东西是一个专长,只有少数 Class 会展示,将其设为一个界面,以便他们可以被该专长所普遍对待
就示例而言,假设您正在创建一套集合(数据存储设备,如队列、列表等 - 我选择这些是因为它们被常用、理解并且人们习惯于它们实现接口) .
您已决定所有集合都应支持添加和删除,但只能枚举其中的一部分。 Add/Remove 将是基础 class 的抽象方法,枚举相关操作将在接口中指定。并非基础的所有具体子 class 都实现了接口,因此并非所有子 "I'll take anything that implements enumeration"
都可以在其他地方使用
我有抽象 BaseClass 和我Class 接口。我创建了两个 classes Class(在不同的命名空间中)并继承自 BaseClass。当我在 Class classes 中实现接口而不是在 BaseClass class 中实现接口是否有意义?
我不明白为什么不; subclasses 可能有不同的 IClass 实现,它们只是符合 IClass 规范。您可能有另一个未实现 IClass 的 Class 实现,因此让 BaseClass 实现它(或抽象它)并将其强加给所有人是没有意义的它 children。
这些是设计决策,而不是硬性规定,并且在很大程度上取决于您正在建模的 object space。如果某些东西对所有人 Class 都是通用的,请考虑将其作为基础 class 的一部分。如果某些东西是一个专长,只有少数 Class 会展示,将其设为一个界面,以便他们可以被该专长所普遍对待
就示例而言,假设您正在创建一套集合(数据存储设备,如队列、列表等 - 我选择这些是因为它们被常用、理解并且人们习惯于它们实现接口) .
您已决定所有集合都应支持添加和删除,但只能枚举其中的一部分。 Add/Remove 将是基础 class 的抽象方法,枚举相关操作将在接口中指定。并非基础的所有具体子 class 都实现了接口,因此并非所有子 "I'll take anything that implements enumeration"
都可以在其他地方使用