PHP设计 - 抽象类和工厂方法

时间:2013-06-13 00:05:04

标签: php oop class-design abstract

我正在尝试设计我的类的最佳方法,我认为抽象类在这里正确的方式,但我不确定!我正在构建一个Wordpress推车的插件,目前,它将适用于Woocommerce和WP-Ecommerce。由于这两个系统具有某些功能的不同实现,例如获取订单对象,我想为每个平台创建一个单独的类。

我有以下内容,它将包含从其继承的类可用的泛型方法。永远不应该实例化这个类:

class Order_Export {
}

然后我还有两个将从上面继承的类:

class Order_WooExport extends Order_Export {
}

class Order_WPExport extends Order_Export{
}

我的设计就在这里吗?我是否正确地说Order_Export类应该是一个抽象类?那些我希望类继承实现的方法呢?我只是简单地在抽象类中标记签名而不是提供正文,或者接口是否在某处发挥作用?

如何实例化正确的课程?我是否创建了一个将返回其中一个的工厂?

任何建议表示赞赏!

1 个答案:

答案 0 :(得分: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
    }
}

最后,工厂似乎也是正确的方式。