私はいくつかのクラス階層を設計しようとしています。抽象クラス - 子タイプ
は、私が 映画やショーオブジェクトの作成をカプセル化し、OBJを返す私が持っているシステム(パーサ)クラスの切り抜いた部分では、クラス
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;
}
}
を以下していると言うことができます。クライアントに送信します。
質問:オブジェクトの種類を取得する最適な方法は何ですか。私の解決策よりも良い方法はありクライアントが
$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質問を説明する完璧な例... –