OOP - 工厂模式 - 处理特定的子类

时间:2015-05-16 12:17:28

标签: oop factory

我有一个工厂,负责构建HTMLTagElement接口的对象。该接口表示HTML元素,并具有获取标记名称和操作元素属性的方法。

但是,我有很多子类,其中很多都有其他公共方法,这些方法仅适用于某个类。例如Panel类:

class Panel implements HTMLTagElement
{
    /**
     * @param string $sTitle
     */
    public function setPanelTitle($sTitle)
    {

    }

    /**
     * @param string $sBody
     */
    public function setPanelBody($sBody)
    {

    }

    /**
     * @param string $sIconPath
     */
    public function setPanelIcon($sIconPath)
    {

    }
}

工厂仍在为HTMLTagElement返回引用,因此为了使用Panel类方法,我需要将它向下转换为Panel。 (我知道PHP是动态语言,没有向下转换,但这更像是OOP问题,而不是PHP问题)

那么,我做得对吗?创建一个新的工厂类会不会更好,那会返回对具体Panel类的引用?然而,我需要一个HTMLTagElement的每个子类的工厂类,它添加了一些新的方法,所以我不确定,它是否也很好。

0 个答案:

没有答案