PHP的個人整合應用分享

Posted by ayuayu on 2014/11/14

感覺抱怨文發有點多,發一篇來洗掉(雖然沒什麼意義)
以下請勿沒看狀況照搬,也請自己先弄懂並確認運作流程

假設有狀況需要執行A方針的流程1和流程2,但其他狀況需要執行B方針的流程1和C方針的流程2
神奇的PHP可以把他整理得很乾淨

class A{
    function magic(){
        doSomethingA;
    }
    function magic2(){
        doSomethingB;
    }
}

class B{
    function magic(){
        doSomethingC;
    }
}

class C{
    function magic2(){
        doSomethingD;
    }
}


很直觀的寫法會變這樣
if (condition) {
    $dynamicClass = new A();
    $dynamicClass->magic();
    $dynamicClass->magic2();
} else {
    $dynamicClass = new B();
    $dynamicClass->magic();
    $dynamicClass2 = new C();
    $dynamicClass2->magic2();
}

但是其實可以整理成這樣

if (condition) {
    $dynamicClass = new A();
    $dynamicClass2 = $dynamicClass;
} else {
    $dynamicClass = new B();
    $dynamicClass2 = new C();
}
$dynamicClass->magic();
$dynamicClass2->magic2();

好處的話,當流程不只兩個,而是十幾二十個的時候,差在哪顯而易見
但是這也考驗著,有沒有辦法整合自己架構,釐清整體流程

因為在這裡雖然很明確的寫出magic和magic2作為方便理解,在現實狀況卻不一定是能很輕鬆分出來的

沒有留言:

張貼留言