《设计模式 - 代理模式》
最近真是忙到死......
其实还是自己偷懒了......
参考 :PHP设计模式——代理模式
一:什么是代理模式?
- 拿生活中例子其实很容易理解
- 小王,帮我告诉下老师,今天我生病了,不能去教室了。
- 这时候,小王就是你的代理,代你去告诉老师你的事情。
- 老王,我喜欢一个女孩,你帮我把这封情书送给小静吧。
- 老王,就是你送情书的代理。
二:为什么要用代理模式?
- 理解了代理模式之后,我也们很清楚的明白的代理模式的用处。
- 解决了目标和对象之间的 (不方便) 等等阻碍。
- 起到了中介的作用,同时保护目标和对象。
三:代理模式的优缺点?
- 缺点
- 对象克隆,造成多余开销。
- 逻辑拆分
- 优点
- 代码清晰,高扩展
四:简单实现一个代理模式?
<?php /** * Created by PhpStorm. * User: LYL * Date: 2015/5/16 * Time: 16:33 */ /**顶层接口 * Interface IGiveGift */ interface IGiveGift { function giveRose(); function giveChocolate(); } /**追求者 * Class Follower */ class Follower implements IGiveGift { private $girlName; function __construct($name='Girl') { $this->girlName=$name; } function giveRose() { echo "{$this->girlName}:这是我送你的玫瑰,望你能喜欢。"; echo PHP_EOL; } function giveChocolate() { echo "{$this->girlName}:这是我送你的巧克力,望你能收下。"; echo PHP_EOL; } } /**代理 * Class Proxy */ class Proxy implements IGiveGift { private $follower; function __construct($name='Girl') { $this->follower = new Follower($name); } function giveRose() { echo "代理送出 - "; echo PHP_EOL; $this->follower->giveRose(); } function giveChocolate() { echo "代理送出 - "; echo PHP_EOL; $this->follower->giveChocolate(); } } $proxy=new Proxy('范冰冰'); $proxy->giveRose(); $proxy->giveChocolate();