【发布时间】:2012-10-03 18:46:49
【问题描述】:
在一些地方,我根据类实现的接口执行逻辑 - 是否有任何理由表明这可能是错误的,也可能不是错误的? (感觉很脏)
这样做的原因是您不必添加任何类属性或方法来确定这些事情,基本上在类定义中您可以明确说明它可以/不能做什么。
一个用例是 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 还是“好的”?
【问题讨论】:
-
我的第一反应是说这是错误的,但我需要一点时间来想一个好的理由。