/** * 在訪問者模式(visitor pattern)中,我們使用了乙個訪問者類,它改變了元素類的執行演算法。
* 通過這種方式,元素的執行演算法可以隨著訪問者改變而改變。這種型別的設計模式屬於行為型模式。
* 根據模式,元素物件已接受訪問者物件,這樣訪問者物件就可以處理元素物件上的操作。
* 例子:電腦有各個單元元件,設定乙個抽象父類,規定具體子類要實現的方法.
* 電腦接納各個元件,並提供訪問通道接納訪問者.訪問者提出要訪問的物件與方法。
*/
(1)computer.class.php (電腦類)
<?phpnamespace visitor;
class
computer
public
function accept(visitor $visitor
)
}}
(2)unit.class.php (元件抽象父類)
<?phpnamespace visitor;
abstract
class
unit
}}
(3)cpu.class.php (具體元件:cpu)
<?phpnamespace visitor;
class cpu extends
unit
}
(4)memory.class.php(具體元件:記憶體)
<?phpnamespace visitor;
class memory extends
unit
}
(5)keyboard.class.php(具體元件:鍵盤)
<?phpnamespace visitor;
class memory extends
unit
}
(6)visitor.class.php (訪問者類)
<?phpnamespace visitor;
class visitor
public function visitmemory(memory $memory)
public function visitkeyboard(keyboard $keyboard)
}
(7)visitor.php (客戶端類)
<?phpspl_autoload_register(
function ($classname
));use
visitor\computer;
usevisitor\cpu;
usevisitor\memory;
usevisitor\keyboard;
usevisitor\visitor;
$computer = new
computer();
$computer->add(new
cpu());
$computer->add(new
memory());
$computer->add(new
keyboard());
$computer->accept(new visitor());
設計模式之訪問者模式
先看一下下面這段 class person public string getaction public void setaction string action public void getconclusion else if action exciting else if action gri...
設計模式之訪問者模式
我們去銀行櫃檯辦業務,一般情況下會開幾個個人業務櫃檯的,你去其中任何乙個櫃檯辦理都是可以的。我們的訪問者模式可以很好付諸在這個場景中 對於銀行櫃檯來說,他們是不用變化的,就是說今天和明天提供個人業務的櫃檯是不需要有變化的。而我們作為訪問者,今天來銀行可能是取消費流水,明天來銀行可能是去辦理手機銀行業...
設計模式之訪問者模式
定義 表示一介作用於某個物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。結構圖 示例 public inte ce vistor public class concretevisitor1 implements vistor override public ...