Proxy Design Pattern
- Problem: Control access to an object by providing a surrogate or placeholder for it.
- Solution: Create a proxy class that acts as an intermediary between the client and the actual object. The proxy can perform additional operations before or after forwarding the request to the real object.
Key Points to Implement a Proxy:
- Proxy class implementing the same interface as the real object.
- Proxy holds a reference to the real object.
- Proxy controls access to the real object and may perform additional actions.
Predefined Use-Case in Java:
- A common use of the Proxy pattern is the
java.lang.reflect.Proxy
class, which allows the creation of dynamic proxy instances for interfaces at runtime.
Example Program:
interface Internet {
void connectTo(String serverHost) throws Exception; } class RealInternet implements Internet { @Override public void connectTo(String serverHost) { System.out.println("Connecting to " + serverHost); } } class ProxyInternet implements Internet { private Internet realInternet = new RealInternet(); @Override public void connectTo(String serverHost) throws Exception { // Check access rights or restrictions if (serverHost.equals("example.com")) { throw new IllegalAccessException("Access denied to " + serverHost); } // Connect through the real internet (delegate) realInternet.connectTo(serverHost); } } public class Main { public static void main(String[] args) { Internet proxyInternet = new ProxyInternet(); try { proxyInternet.connectTo("example.com"); // This will be blocked } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); } try { proxyInternet.connectTo("google.com"); // This will succeed } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); } } }
Comments
Post a Comment