我们有一个系统,在我们知道它的具体类型是什么之前,我们有理由实例化一个对象。例如,我们希望在我们知道最终类是“book”还是“cd”之前实例化一个类“media”。
这就是我们正在做的事情。我们实例化“媒体”对象,一旦我们知道它是什么类型的媒体,我们就实例化一个“书”,传入媒体对象。
class Book extends Media
{
public function __construct( $parent )
{
$vars = get_object_vars( $parent );
foreach( $vars as $key => $value )
$this->$key = $value;
}
}
//elsewhere
$item = new Media();
$item->setPrice( $price );
//other code, figure out the item type
$item = new Book( $item );
有没有更好的方法来做这样的事情?这是动态多态性吗?