標籤:blog io 使用 ar java div on cti log
實現三種策略:
<?phpinterface OutputInterface{ public function load();}class SerializedArrayOutput implements OutputInterface{ public function load() { return serialize($arrayOfData); }}class JsonStringOutput implements OutputInterface{ public function load() { return json_encode($arrayOfData); }}class ArrayOutput implements OutputInterface{ public function load() { return $arrayOfData; }}
設立呼叫中介調用不同策略實現:
<?phpclass SomeClient{ private $output; public function setOutput(OutputInterface $outputType) { $this->output = $outputType; } public function loadOutput() { return $this->output->load(); }}
用戶端調用:
<?php$client = new SomeClient();// Want an array?$client->setOutput(new ArrayOutput());$data = $client->loadOutput();// Want some JSON?$client->setOutput(new JsonStringOutput());$data = $client->loadOutput();
由於設計模式在進階語言中的通用,理解和使用上C#,java,Php等的實現沒有差別,可能需要注意的就是不同語言的編程範式。
[php學習]策略模式