来自GOF - 设计模式书:
代理对象为另一个对象提供代理或占位符以控制对它的访问.
因此,类A(代理)可以扩展B(RealObject)类或实现其接口.通常,代理在呼叫者和真实对象之间执行一些中间步骤,而呼叫者不知道他们正面对代理.
代理概念还有许多更具体的模式:Decorator(添加更多功能),远程代理(隐藏对象之间的通信),保护代理(控制对象之间的通信),Lazy Instantiation(仅在它们出现时推迟加载增长对象)是必要的)和其他人.所有这些模式都不会向真实对象添加额外的方法,而是向现有方法添加一些功能.
我建议你阅读Giorgio Sironi在Practical php模式书中的例子.
对于一个真实的例子, Doctrine使用代理来延迟加载相关对象.
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |