PHP – 使用空接口来确定逻辑
发布时间:2020-12-13 17:42:46 所属栏目:PHP教程 来源:网络整理
导读:有几个地方我根据类实现的接口执行逻辑 – 有什么理由可能会出错也可能没出错? (感觉很脏) 这样做的原因是你不必添加任何类属性或方法来确定这些东西,基本上在类定义中你可以明确说明它能做什么/不能做什么. 一个用例是ajax调用,有些需要你登录,有些则不需
有几个地方我根据类实现的接口执行逻辑 – 有什么理由可能会出错也可能没出错? (感觉很脏)
这样做的原因是你不必添加任何类属性或方法来确定这些东西,基本上在类定义中你可以明确说明它能做什么/不能做什么. 一个用例是ajax调用,有些需要你登录,有些则不需要: class ajax_ads extends ajax_controller implements no_login { } 此外,界面中没有方法,为此目的使用soley. interface no_login {} 然后在基本控制器中: $controller = controller::factory() if( !($controller instanceof no_login) && !$controller->LoggedIn()){ return $controller->redirect(/*login page*/); } 使用instance_of看起来轻巧简单,它工作正常,但再次感觉我完全滥用界面的目的. 所以我问,是用一个接口来判断逻辑是个坏主意,糟糕的oop还是’好’? 解决方法
当你需要一个if或一个开关来确定一个对象应该是的状态时,通常一个好的迹象表明你需要多态性.
在您的情况下,应该有一个抽象类:Ajax_Ads和两个扩展类:No_Login_Ajax_Ads扩展Ajax_Ads,Login_Ajax_Ads扩展Ajax_Ads.并根据程序的状态实例化您需要的那个,这可以通过工厂完成. 有关更多信息,请观看以下讲座:The Clean Code Talks — Inheritance,Polymorphism,& Testing (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |