The Proxy pattern provides a placeholder or surrogate for another object to control access to it. The proxy has the same interface as the real object but adds behavior — like lazy loading, access control, caching, or logging — before delegating to it.
What the Proxy pattern does
PROXY → an object that STANDS IN for another, controlling access to it:
→ same interface as the real object (clients use it transparently)
→ adds behavior BEFORE/AROUND delegating to the real object
→ controls WHEN and HOW the real object is accessed
→ "a stand-in that adds control/behavior"
