Il pattern Proxy fornisce un placeholder o surrogato per un altro oggetto al fine di controllare l'accesso ad esso. Il proxy ha la stessa interfaccia dell'oggetto reale ma aggiunge comportamento — come lazy loading, controllo d'accesso, caching o logging — prima di delegare ad esso.
Cosa fa il pattern Proxy
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"
