<?php //代理模式 代理模式的做用和父类以及接口和组合的做用相似,都是为了聚合共用部分,减小公共部分的代码 //程序猿能写代码但是不能运行机器码,这些得交个计算机 //代码 class Code { private $_code_txt; public function __construct($code_txt){ $this->_code_txt = $code_txt; } public function getCode(){ return $this->_code_txt; } } //程序猿 class Programer { public static function makeCode(){ $code_txt = "import std.stdio;void main(){writeln(\"hello d language programe\");}"; return new Code($code_txt); } } //运行代码的机器 class CodeRunner { private $_code; public function runCode($code){ $this->_code = $code; $this->debug(); $this->complie(); $this->run(); } public function debug(){ echo $this->_code->getCode()."debug\n"; } public function complie(){ echo $this->_code->getCode()."编译\n"; } public function run(){ echo $this->_code->getCode()."运行\n"; } } $cr = new CodeRunner(); $cr->runCode(Programer::makeCode());