<?php
class ReaderFactory {
public function create($filename){
$reader = $this->createReader($filename);
return $reader;
}
private function createReader($filename){
if($filename == 'foo.txt'){
return new FooReader($filename);
}
else if($filename == 'bar.txt'){
return new BarReader($filename);
} else {
die("ERROR\n");
}
}
}
interface Reader {
public function read();
public function display();
}
class FooReader implements Reader {
private $filename;
public function __construct($filename){
$this->filename = $filename;
}
public function read(){
print $this->filename."を読み込みます\n";
}
public function display(){
print "FooReaderで、displayします。\n";
}
}
class BarReader implements Reader {
private $filename;
public function __construct($filename){
$this->filename = $filename;
}
public function read(){
print $this->filename."を読みます。ハイハイ。\n";
}
public function display(){
print "BarReaderですが。何か?\n";
}
}
$list = array('foo.txt', 'bar.txt');
for($i=0; $i<count($list); $i++){
$factory = new ReaderFactory();
$data = $factory->create($list[$i]);
$data->read();
$data->display();
print "\n";
}
?>