2013-06-13 36 views
1

我試圖找出設計我的類的最佳方式,我認爲抽象類在這裏是正確的方式,但我不確定!我正在爲Wordpress購物車建立一個插件,目前,這款插件將適用於Woocommerce和WP-Ecommerce。由於這兩個系統具有某些功能的不同實現,例如獲取訂單對象,我想爲每個平臺創建一個單獨的類。PHP設計 - 抽象類和工廠方法

我有以下將包含通用的方法,應該可用於繼承它的類。這個類應該永遠不會被實例化:

class Order_Export { 
} 

然後我有2個類,從上面繼承:

class Order_WooExport extends Order_Export { 
} 

class Order_WPExport extends Order_Export{ 
} 

是我設計的就在這裏?我說的Order_Export類應該是抽象類嗎?我想要繼承的類實現的方法呢?我是否簡單地在抽象類中標記簽名而不提供正文,或者界面是否在這裏的某處發揮作用?

如何實例化正確的類?我是否創建了一個會返回一個或另一個的工廠?

任何意見讚賞!

回答

1

的聲音正確使用抽象基類,只要你一定要永遠需要實例Order_Export

abstract class Order_Export 
{ 
    abstract protected function someMeth1(); 
    abstract protected function someMeth2(); 

    public function someMeth3() { 
     // Do common thing to both Order_WooExport and Order_WPExport 
     // using someMeth1(), someMeth2()... 
    } 
} 

然後:

class Order_WooExport extends Order_Export 
{ 
    protected function someMeth1() { 
     // Do something specific 
    } 

    protected function someMeth2() { 
     // Do something specific 
    } 
} 

最後,工廠似乎是正確的方式去。