有几个地方我根据类实现的接口执行逻辑 - 有什么理由表明这可能是错的,也可能不是错的?(感觉很脏)
这样做的原因是您不必添加任何类属性或方法来确定这些事情,基本上在类定义中您可以明确说明它可以/不能做什么。
一种用例是 ajax 调用,有些要求您登录,有些则不需要:
class ajax_ads extends ajax_controller implements no_login {
}
此外,接口中没有方法,仅用于此目的。
interface no_login {}
然后在基本控制器中:
$controller = controller::factory()
if( !($controller instanceof no_login) && !$controller->LoggedIn()){
return $controller->redirect(/*login page*/);
}
使用 instance_of 似乎很轻巧且简单,并且工作正常,但再次感觉我完全滥用了界面的目的。
所以我问,使用接口来确定逻辑是一个坏主意、坏 oop 还是“好的”?