我有一个工厂,负责构建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的每个子类的工厂类,它添加了一些新的方法,所以我不确定,它是否也很好。