Suggest an editImprove this articleRefine the answer for “In what situations is Proxy especially useful?”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)**Proxy** is especially useful when you need to **control access to a resource-intensive, remote, or sensitive object** without changing the client's interface. **Key point:** a proxy makes interaction with objects controlled, safe, and transparent, while leaving the client with the impression that it is working with the "real" object.Shown above the full answer for quick recall.Answer (EN)Image**Proxy** is especially useful when you need to **control access to a resource-intensive, remote, or sensitive object** without changing the client's interface. --- ### 1. **Lazy Initialization (Virtual Proxy)** When creating an object is expensive (for example, loading an image, connecting to a database, or reading a large file). The proxy creates the real object **only on first access**. > *Example:* displaying images in an application: as long as a picture is not shown, the real `Image` object is not created. --- ### 2. **Remote Calls (Remote Proxy)** When an object lives **in another process or on another server**. The proxy hides the network logic (serialization, HTTP calls) so the client works with the remote object as if it were local. > *Example:* Java RMI, gRPC, microservices, API clients. --- ### 3. **Access Control (Protection Proxy)** When you need to **restrict operations** based on roles, permissions, or state. The proxy checks permissions before a request reaches the real object. > *Example:* an administrator can delete a record, a regular user can only view it. --- ### 4. **Caching (Caching Proxy)** When the result of operations can be **reused**. The proxy stores the real object's responses and returns them without repeating the calls. > *Example:* caching requests to an external API. --- ### 5. **Logging and Monitoring (Logging Proxy)** When you need to **track the actions** of an object without changing its code. The proxy intercepts calls and adds logging, metrics, or tracing. --- ### 6. **Synchronization and Thread Safety (Synchronized Proxy)** When an object is accessed from multiple threads, the proxy adds **locking and access control**, without touching the source class. --- ### **Conclusion** Proxy is especially useful when you need to: - *defer the creation of a heavy object*, - *hide remote interaction*, - *add security, logging, caching, or synchronization*, all **without changing the original code and interface**. **Summary:** A proxy makes interaction with objects **controlled, safe, and transparent**, leaving the client with the impression that it is working with the "real" object.For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.