Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 作为一名API开发人员,我应该在什么时候调用基类实现?_Oop - Fatal编程技术网

Oop 作为一名API开发人员,我应该在什么时候调用基类实现?

Oop 作为一名API开发人员,我应该在什么时候调用基类实现?,oop,Oop,我目前正在开发一个API,它使用带有默认实现的抽象类。虽然我在过去做过这件事,但我并没有真正考虑到在派生类中调用base.SomeMethod()的哲学意义,因为这些API不是供公众使用的。由于此API旨在公开可见,我想知道应该如何处理回基类的调用。对于我来说,假设基本调用总是在派生实现中的第一个或最后一个发生,并且我只是为实现者记录该假设,这样可以吗?或者基类调用应该没有副作用,所以实现者何时调用基类无关紧要?这有经验法则吗 谢谢。我想这在很大程度上取决于你的特殊班级的需要。如果您想确保调用基

我目前正在开发一个API,它使用带有默认实现的抽象类。虽然我在过去做过这件事,但我并没有真正考虑到在派生类中调用base.SomeMethod()的哲学意义,因为这些API不是供公众使用的。由于此API旨在公开可见,我想知道应该如何处理回基类的调用。对于我来说,假设基本调用总是在派生实现中的第一个或最后一个发生,并且我只是为实现者记录该假设,这样可以吗?或者基类调用应该没有副作用,所以实现者何时调用基类无关紧要?这有经验法则吗


谢谢。

我想这在很大程度上取决于你的特殊班级的需要。如果您想确保调用基本行为(甚至可能以特殊顺序调用),可以使用。我发现这种模式是一种以受控方式提供子类扩展点的非常优雅的方式,我认为这比给开发人员留下注释要好

明显的缺点是,如果选择的钩子不好,可能会对其他开发人员造成太多的约束。我记得有一两次不得不重写模板方法,因为挂钩不允许我执行所需的行为


HTH

我很好奇为什么这一点被否决了。这似乎是一个合理的问题,我想知道为什么它不是。base.SomeMethod是由派生类调用的,还是由某个使用者调用的?如果是派生类,SomeMethod不应该是公共的。