Reading:オブ脳本(4)Compositeパターン(PHP5,ArrayIterator編)
先ほどのサンプルコードをArrayIterator使って書き換えてみました。
Bumon.php
<?php class Bumon implements Party { private $_parties; private $_name; public function __construct($name) { $this->_name = $name; $this->_parties = new ArrayObject(); } public function addParty($party) { $this->_parties->append($party); } public function display() { echo $this->_name . "\n"; echo "-------------------\n"; $iterator = $this->_parties->getIterator(); while ($iterator->valid()) { $iterator->current()->display(); $iterator->next(); } echo "\n"; } }
diff取ってみた
@@ -1,23 +1,26 @@ <?php class Bumon implements Party { - private $_parties = array(); + private $_parties; private $_name; public function __construct($name) { $this->_name = $name; + $this->_parties = new ArrayObject(); } public function addParty($party) { - $this->_parties[] = $party; + $this->_parties->append($party); } public function display() { echo $this->_name . "\n"; echo "-------------------\n"; - foreach ($this->_parties as $party) { - $party->display(); + $iterator = $this->_parties->getIterator(); + while ($iterator->valid()) { + $iterator->current()->display(); + $iterator->next(); } echo "\n"; }
記述量やや増えてますね。foreachの方が読みやすいのはもしやオブ脳じゃないから?!