<?php print " ขอบคุณครับ....."; ?>
<?php interface IBook{ public function accept(BookVisitor $visitor); public function getTitle(); } abstract class Book{ private $title; public function __construct($title){ $this->title=$title; } public function getTitle(){ return $this->title; } } class TextBook extends Book implements IBook{ public function accept(BookVisitor $visitor){ $visitor->visitTextBook($this); } } class ComicBook extends Book implements IBook{ public function accept(BookVisitor $visitor){ $visitor->visitComicBook($this); } } class MiscBook extends Book implements IBook{ public function accept(BookVisitor $visitor){ $visitor->visitMiscBook($this); } } class ITBook extends Book implements IBook{ public function accept(BookVisitor $visitor){ $visitor->visitITBook($this); } } class InterestingList{ private $interestBook; private $books=array(); const COMIC_BOOK='ComicBook'; const TEXT_BOOK='TextBook'; const MISC_BOOK='MiscBook'; const IT_BOOK='ITBook'; public function __construct($interestBook){ $this->interestBook=$interestBook; } public function add(Book $book){ if(get_class($book)==$this->interestBook){ array_push($this->books,$book); } } public function getBooks(){ return $this->books; } public static function getInstance($interestBook){ $interestingList= new InterestingList($interestBook); return $interestingList; } } abstract class BookVisitor{ protected $interestingList; public function __construct($interestBook){ $this->interestingList=InterestingList::getInstance($interestBook); } public function visitComicBook(ComicBook $book){ } public function visitTextBook(TextBook $book){ } public function visitMiscBook(MiscBook $book){ } public function visitITBook(ITBook $book){ } public function showInterestedCollection(){ foreach($this->interestingList->getBooks() as $book){ echo '...' . $book->getTitle() . '<br/>'; } } } class ComicCollector extends BookVisitor{ public function __construct(){ parent::__construct(InterestingList::COMIC_BOOK); } public function visitComicBook(ComicBook $book){ echo 'หนังสือการตูน ' . $book->getTitle(). ' สนุกมาก <br/>'; $this->interestingList->add($book); } public function visitTextBook(TextBook $book){ echo 'หนังสือเรียน ' . $book->getTitle() . ' น่าเบื่อ <br/>'; } public function visitITBook(ITBook $book){ echo 'หนังสือไอที ' . $book->getTitle() . ' ยากเกินไป <br/>'; } public function visitMiscBook(MiscBook $book){ echo 'หนังสือทั่วไป ' . $book->getTitle() . ' น่าสนใจ <br/>'; } public function showInterestedCollection(){ echo '<i>The collection of Comic books </i><br/>'; parent::showInterestedCollection(); } } class TextBookCollector extends BookVisitor{ public function __construct(){ parent::__construct(InterestingList::TEXT_BOOK); } public function visitComicBook(ComicBook $book){ echo 'หนังสือการตูน ' . $book->getTitle() . ' น่าเบื่อ <br/>'; } public function visitTextBook(TextBook $book){ echo 'หนังสือเรียน ' . $book->getTitle() . ' น่าสนใจ มาก<br/>'; $this->interestingList->add($book); } public function visitITBook(ITBook $book){ echo 'หนังสือไอที ' . $book->getTitle() . ' น่่าสนใจ <br/>'; } public function visitMiscBook(MiscBook $book){ echo 'หนังสือทั่วไป ' . $book->getTitle() . ' เฉย ๆ <br/>'; } public function showInterestedCollection(){ echo '<i>The collection of Text books </i><br/>'; parent::showInterestedCollection(); } } class MiscBookCollector extends BookVisitor{ public function __construct(){ parent::__construct(InterestingList::MISC_BOOK); } public function visitComicBook(ComicBook $book){ echo 'หนังสือการตูน ' . $book->getTitle() . ' น่าเบื่อ <br/>'; } public function visitTextBook(TextBook $book){ echo 'หนังสือเรียน ' . $book->getTitle() . ' ่น่าเบื่อ <br/>'; } public function visitITBook(ITBook $book){ echo 'หนังสือไอที ' . $book->getTitle() . ' ไม่รู้เรื่อง <br/>'; } public function visitMiscBook(MiscBook $book){ echo 'หนังสือทั่วไป ' . $book->getTitle() . ' น่าสนใจมาก <br/>'; $this->interestingList->add($book); } public function showInterestedCollection(){ echo '<i>The collection of Comic books </i><br/>'; parent::showInterestedCollection(); } } class ITBookCollector extends BookVisitor{ public function __construct(){ parent::__construct(InterestingList::IT_BOOK); } public function visitComicBook(ComicBook $book){ echo 'หนังสือการตูน ' . $book->getTitle() . ' น่าสนใจ <br/>'; } public function visitTextBook(TextBook $book){ echo 'หนังสือเรียน ' . $book->getTitle() . ' น่าสนใจ <br/>'; } public function visitITBook(ITBook $book){ echo 'หนังสือไอที ' . $book->getTitle() . ' น่าสนใจมาก <br/>'; $this->interestingList->add($book); } public function visitMiscBook(MiscBook $book){ echo 'หนังสือทั่วไป ' . $book->getTitle() . ' น่าเบื่อ <br/>'; } public function showInterestedCollection(){ echo '<i>The collection of IT books </i><br/>'; parent::showInterestedCollection(); } } class BookShelf{ public $elements; function __construct(){ } public function attach(Book $book){ $this->elements[]=$book; } public function detach($detachBook){ foreach($this->elements as $bookIndex=>$book){ if($this->elements[$bookIndex]==$detachBook){ unset($this->elements[$bookIndex]); } } } public function accept(BookVisitor $visitor){ foreach($this->elements as $book){ $book->accept($visitor); } } } $bookShelf=new BookShelf(); $bookShelf->attach(new TextBook('Basic English')); $bookShelf->attach(new TextBook('รูปแบบการเขียน จดหมาย')); $bookShelf->attach(new ComicBook('Hunter x Hunter')); $bookShelf->attach(new ITBook('Java Programming')); $bookShelf->attach(new TextBook('เคมีเบื้องต้น')); $bookShelf->attach(new miscBook('Oop magazine')); $bookShelf->attach(new TextBook('การบัญชี')); $bookShelf->attach(new miscBook('ไม้ดอกไม้ประดับ')); $bookShelf->attach(new TextBook('การเงิน')); $bookShelf->attach(new miscBook('คู่ สร้าง คู่สม')); $bookShelf->attach(new ComicBook('Jojo')); $bookShelf->attach(new ComicBook('Dragon Ball Z')); $bookShelf->attach(new ComicBook('One Priece')); $bookShelf->attach(new miscBook('แนวหน้า')); $bookShelf->attach(new ITBook('คู่มือ IPhone4')); $bookShelf->attach(new ComicBook('AKB49')); $bookShelf->attach(new miscBook('การบ้านการเรือน')); $bookShelf->attach(new TextBook('Math')); $bookShelf->attach(new ITBook('PHP Programming')); $bookShelf->attach(new ComicBook('God of War')); $comicBookCollector =new ComicCollector(); $textBookCollector =new TextBookCollector(); $miscBookCollector =new MiscBookCollector(); $itBookCollector =new ITBookCollector(); echo '*** การประมวลผลของ Comic Book Collector *** <br/>'; $bookShelf->accept($comicBookCollector); $comicBookCollector->showInterestedCollection(); echo '<br/>'; echo '*** การประมวลผลของ Text Book Collector *** <br/>'; $bookShelf->accept($textBookCollector); $textBookCollector->showInterestedCollection(); echo '<br/>'; echo '*** การประมวลผลของ Miscellenous Book Collector *** <br/>'; $bookShelf->accept($miscBookCollector); $miscBookCollector->showInterestedCollection(); echo '<br/>'; echo '*** การประมวลผลของ IT Book Collector *** <br/>'; $bookShelf->accept($itBookCollector); $itBookCollector->showInterestedCollection(); ?>
เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง