<?php
/** * 訪問者雙要素
* 1.元素
* 2.訪問者
* 元素負責儲存資料,提供介面訪問
* 訪問者通過元素暴露的介面獲取資訊
*/abstract
class
element
}inte***ce
visitor
/** * 以看電影為例子
*/class
xyyextends
element
class
bxjg
extends
element
class
jfextends
element
class
movie
public
function
accept
(visitor $visitor)}
}//小孩
class
child
implements
visitor}}
//青年
class
young
implements
visitor}}
//老年
class
oldimplements
visitor}}
/** * 訪問者模式優點:
* 1.容易增加訪問者,完全符合開放閉合
* 2.將有關元素物件的訪問集中到訪問者中
* 缺點:
* 1.不容易增加元素,增加元素需要修改所有訪問者
* 2.破壞封裝,元素物件將自身暴露給訪問者(visit($this))
*///建立電影
$movie
=new
movie()
;$movie
->
add(
newxyy()
);$movie
->
add(
newbxjg()
);$movie
->
add(
newjf()
);//兒童走進電影院
$movie
->
accept
(new
child()
);//少年走進電影院
$movie
->
accept
(new
young()
);//老年人進入電影院
$movie
->
accept
(new
old())
;
訪問者模式
訪問者模式 visitor pattern 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作。一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。一 問題 集合是大多數的系統都要處理的一種容器物件,它儲存了對其它物件的引用。一般情況下,在集合上採取的...
訪問者模式
行為模式中的訪問者模式 訪問者模式是物件的行為模式。訪問者模式的目的是封裝一些施加於某種資料結構元素之上的操作,一旦這些操作需要修改的話,接受這個操作的資料結構則可以保持不變。動機 類層次結構中可能經常由於引入新的操作,從而將型別變得脆弱。在軟體構建過程中,由於需求的改變,某些類層次結構中常常需要增...
訪問者模式
1.說明 namespace visitorspattern 象棋類 public abstract class chess public class redchess chess public class blackchess chess 在贏的情況下的狀態 public class win ac...