类型检查是否正常?

Tim*_*dle 1 oop inheritance interface

即使您正在检查接口,类型检查是否被认为是不好的做法?我知道你应该总是编程到一个接口而不是一个实现 - 这是什么意思?

例如,在PHP中,以下是否可以?

if($class instanceof AnInterface) {
   // Do some code
}
Run Code Online (Sandbox Code Playgroud)

或者是否有更好的方法来改变基于类类型的代码行为?

编辑:为了清楚我正在谈论检查一个类是否实现一个接口而不仅仅是它是某个类的实例.

jal*_*alf 5

只要你遵循LSP,我就没有看到问题.您的代码必须适用于该接口的任何实现.只要您可以正确使用接口的任何实现,某些实现会导致您遵循不同的代码路径,这不是问题.

如果您的代码不适用于接口的所有实现,那么您不应该首先使用该接口.