介绍
代理模式是一种设计模式,它为其他对象提供一种代理以控制对这个对象的访问。通俗点说,代理模式就是为一个对象提供一个代理对象,代理对象可以控制原始对象的访问,从而达到在不改变原始对象的情况下扩展其功能或保护其安全的目的。代理模式在实际应用中也比较常见,例如远程代理、虚拟代理、缓存代理、安全代理等都可以使用代理模式来实现。
角色
角色 | 说明 |
---|---|
Subject | 抽象主题角色 |
RealSubject | 真实主题角色 |
Proxy | 代理主题角色 |
Client | 访问角色 |
角色示例
假设有一个手机厂家,他们有自己的销售渠道和销售人员。但是,由于市场竞争激烈,厂家需要扩大销售渠道,以增加销售额。于是,厂家决定采用代理模式来扩大销售渠道。代理商通过代理销售人员来销售手机给顾客,扩大了销售渠道,提高了销售额。
类名 | 担任角色 | 说明 |
---|---|---|
Phone | 抽象主题角色 | 手机 |
PhoneFactory | 真实主题角色 | 手机厂家 |
Agent | 代理主题角色 | 代理商 |
Customer | 访问角色 | 顾客 |
UML类图
代码
1 | <?php |
创建 Agent.php,内容如上。
执行
1 | $ php Agent.php |