我是否正确地说代理对象就像是另一个对象/实体的别名? 如何使用代理对象?有人能给出一个基本的例子吗?
非常感谢任何回复。
答案 0 :(得分:7)
代理对象为另一个对象提供代理或占位符 控制对它的访问。
因此,类A(代理)可以扩展B(RealObject)类或实现其接口。 通常,代理在调用者和真实对象之间执行一些中间步骤,而不会让调用者知道他们正面对代理。
还有许多特定模式来自代理概念:Decorator(添加更多功能),远程代理(隐藏对象之间的通信),保护代理(控制对象之间的通信),Lazy Instantiation(推迟增长对象的加载)只有当他们需要时)和其他人。 所有这些模式都不会为真实对象添加额外的方法,而是为现有方法添加一些功能。
我建议你阅读Giorgio Sironi example in Practical php patterns book。
有关真实示例Doctrine uses proxy for lazy loading of related objects。