<!DOCTYPE html>
<meta charset="utf-8">
<?php
require_once 'FileDataSource.php';
require_once 
'Listing.php';
require_once 
'ExtendedListing.php';

//Listingクラスに「どうやって実現するか」を書けるようにしておく
$dataSource = new Listing(new FileDataSource('data.txt'));
$dataSource->open();
echo 
$dataSource->read();
$dataSource->close();

echo 
'<hr />';

//Listingクラスを継承してに「どうやって実現するか」を追加する
$dataSource = new ExtendedListing(new FileDataSource('data.txt'));
$dataSource->open();
echo 
$dataSource->readWithEncode();
$dataSource->close();

/*
//FileDataSourceで直接ファイルを扱う例(「どうやって実現するか」が増えると、修正作業量が膨大になる)
require_once 'FileDataSource.php';

$dataSource = new FileDataSource('data.txt');
$dataSource->open();
echo $dataSource->read();
$dataSource->close();
*/