我试图设计一些类层次结构,并在此部分“卡住”。抽象类 - 儿童类型
比方说,我有以下类
abstract class Video
{
const TYPE_MOVIE = 1;
const TYPE_SHOW = 2;
abstract public function getTitle();
abstract public function getType();
}
class Movie extends Video
{
// ...
public function getType()
{
return self::TYPE_MOVIE;
}
}
class Show extends Video
{
// ...
public function getType()
{
return self::TYPE_SHOW;
}
}
在系统我有(分析器)类的有多种不同的组成部分,它封装 电影放映对象的创建和返回OBJ。给客户。
问题:什么是获得一个obj类型的最佳方式。从解析器/工厂类返回,使客户可以这样做
$video = $parser->getVideo('Dumb and Dumber');
echo $video->getTitle();
// Way 1
if($video->getType == 'show') {
echo $video->getNbOfSeasons();
}
// Way 2
if($video instanceof Show) {
echo $video->getNbOfSeasons();
}
// Current way
if($video->getType == Video::TYPE_SHOW) {
echo $video->getNbOfSeasons();
}
难道还有比我的解决方案更好的办法(读作:没有我的解决方案吸)?
+1完美的例子来解释任何问题...... – 2012-04-23 08:50:28