1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
<?php //外观模式,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。--引自百度百科 //组装电脑 客户端给出指定规则的配置,调用安装方法即可 class Board { public $name = '主板'; public function __set($name, $value) { $this->$name = $value; } public function __get($name) { if (isset($this->$name)) { return $this->$name; } else { return null; } } } class CPU { private $name = 'CPU'; public function __set($name, $value) { $this->$name = $value; } public function __get($name) { if (isset($this->$name)) { return $this->$name; } else { return null; } } } class Memory { public $name = '内存'; public function __set($name, $value) { $this->$name = $value; } public function __get($name) { if (isset($this->$name)) { return $this->$name; } else { return null; } } } class HardDisk { public $name = '硬盘'; public function __set($name, $value) { $this->$name = $value; } public function __get($name) { if (isset($this->$name)) { return $this->$name; } else { return null; } } } class Graphics { public $name = '显卡'; public function __set($name, $value) { $this->$name = $value; } public function __get($name) { if (isset($this->$name)) { return $this->$name; } else { return null; } } } //... class Computer { public function install(array $info) { foreach ($info as $class => $params) { $this->$class($params); } } public function __call($className, $params) { if (class_exists($className)) { $class = new $className(); $class->name = $params[0]; echo '安装 ' . $class->name . '<br>'; } else { echo '没有' . $params[0] . '<br>'; } } } //client $info = array( 'Board' => '华硕主板', 'CPU' => 'intel cpu', 'Memory' => '金士顿内存', 'HardDisk' => '西部数据硬盘', 'Graphics' => '七彩虹显卡', 'test' => '三星显示屏' ); echo '我要装一台电脑,配置如下:<br>'; echo '<pre>'; print_r($info); echo '<br>好的,这就帮你装<br><br>'; $computer = new Computer(); $computer->install($info); echo '<br>装好了<br>'; |