<?php
//代理模式
//基础类(get/set方法)
class CommonClass {
public function __set($key, $value) {
$this->$key = $value;
}
public function __get($key) {
if(isset($this->$key)) {
return $this->$key;
} else {
return NULL;
}
}
}
class RedWine extends CommonClass {
public static $NO;
function __construct() {
self::$NO++;
}
}
//卖的接口
interface ISellable {
function sell($count);
}
class RedWineFactory extends CommonClass implements ISellable {
public function sell($count) {
$redWineList = array();
for($i = 0; $i < $count; $i++) {
array_push($redWineList, new RedWine());
}
return $redWineList;
}
}
class RedWineProxy extends CommonClass implements ISellable {
//一个RedWineFactory对象的引用
private $redWineFactory;
//销售总量
public static $sellCount = 0;
public function __construct(RedWineFactory $redWineFactory) {
$this->redWineFactory = $redWineFactory;
}
public function sell($count) {
if($this->checkUser()) {
$redWine = $this->redWineFactory->sell($count);
self::$sellCount += $count;
return $redWine;
} else {
return NULL;
}
}
protected function checkUser() {
return true;
}
}
$redWineFactory = new RedWineFactory();
$redWineProxy = new RedWineProxy($redWineFactory);
$redWineProxy->sell(3);
var_dump($redWineProxy);
echo RedWineProxy::$sellCount;
?>
代理模式(Proxy Pattern)
最新推荐文章于 2025-06-16 00:03:38 发布