我是否正确地说代理对象就像另一个对象/实体的别名?如何使用代理对象?谁能举个基本的例子?
非常感谢任何答复。
来自GOF - 设计模式书:
代理对象为另一个对象提供代理或占位符以控制对其的访问。
因此类 A(proxy) 可以扩展 B(RealObject) 类或实现其接口。通常代理在调用者和真实对象之间做一些中间步骤,而调用者不知道他们面对的是代理。
代理概念产生了许多更具体的模式:装饰器(添加更多功能),远程代理(隐藏对象之间的通信),保护代理(控制对象之间的通信),延迟实例化(仅在增长对象时才延迟加载)需要)等。所有这些模式都不会为真实对象添加额外的方法,而是为现有方法添加一些功能。
我建议你阅读Practical php patterns book 中的 Giorgio Sironi 示例。
举一个真实的例子 ,Doctrine 使用代理来延迟加载相关对象。