将if if转换为Pattern

时间:2016-03-26 15:00:32

标签: php laravel design-patterns

我正在使用Laravel构建一个系统,这个系统非常复杂,如果包含太多其他内容,我想更改并清理代码以便于维护。

我有类似的东西

if(A)
{
    call_a();
}
else
{
    if(B)
    {
        call_a();
    }
    else
    {
        if()
        {
            call_b();
        }
        else
        {
            if(C)
            {
                call_a();
            }
            else
            {
                call_b();
            }
        }
    }
}

当然它越来越复杂。

有任何帮助吗? 感谢

1 个答案:

答案 0 :(得分:0)

我想我确切地知道你在寻找什么。我真的很喜欢this post在{+ 3}}上的Reddit:

  

现在是时候了解 多态

     

如果您正在进行面向对象,则未在帖子中指定   用PHP开发。如果你不是,那么你就会被if和   案例陈述,但如果你是,那么你很幸运。的 多态性   部分是为了帮助您完全消除代码类型而发明的   正在描述 - 无限长的条件陈述列表

     

在你的情况下,基本的想法是,无论你是什么行为   试图描述,这取决于某些变量的价值,可能   更好地封装在类及其子类中。从你的   然后,应用程序的观点看起来是该类的每个实例   同样,但在内部,每个对象将实现不同的   溶液

     

这是PHP中继承的一个快速示例,但取决于您的   特殊情况,其他多态方法可能会更好。

     

花一点时间阅读这篇文章是件好事。别想   关于代码这么多。多态性存在于所有面向对象中   语言,你最好挑战自己去理解   这个概念。就个人而言,我花了很多时间阅读   JavaScript设计模式,因为那是我现在的域名,但是   也许其他人可以为PHP推荐一本类似的书。