1
2
如果您依赖的库代码使用
我也认为有合法的用途
如果出于某种原因您确实不想使用继承,则使用一些脏选项:
如果可以在运行时修改类,则有许多选项:
编辑:对于您的具体示例,我想只有第一个选项有效。但我还是会考虑创建一个
|
2
1
要记住的一件事是你不必 使用 如果您使用继承路由,则基类中的任何内容。您可以使存根类从中继承,而不添加任何具体的实现。我做过几次这样的事情:
如果您需要从其他事物继承,我想您可能会遇到多继承的一些问题,但是如果您不提供任何具体的实现,这应该是相当小的。
我同意如果可能的话应该避免出现这种情况,但我不确定我会称之为反模式。使用ISInstance有一些合理的理由。例如,有一些消息传递框架使用它来定义消息。例如,如果您得到一个从shut down继承的类,那么子系统应该关闭了。 |
3
0
|
4
0
我的第一个冲动是尝试修复使用
编辑: 所以,您的理由是您正在编写框架/库代码,您希望人们能够在所有情况下使用这些代码,即使他们想使用isInstance? 我认为这有几个问题:
我认为您最好是编写惯用的、设计良好的代码。好代码(和坏代码)有传播的趋势,所以请举个例子。希望它将导致代码质量的整体提高。反之,质量只会继续下降。 |
5
0
如果您编写的框架需要接受来自API用户的某种输入,那么我就没有理由使用IsInstance。虽然可能很难看,但我总是检查它是否提供了我要使用的接口:
如果API用户想要使用它,我还经常提供一个继承默认功能的好类:
|
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |