2916. Design Pattern - ProxyProxy Pattern
Structural Pattern: Proxy Pattern.
1. Proxy Pattern
In proxy pattern, a class represents functionality of another class. The Proxy class provides a surrogate or place holder to provide access to an object.
2. Example
2.1 Internet
public interface Internet {
public void connect(String host) throws Exception;
}
public class RealInternet implements Internet
{
@Override
public void connect(String host)
{
System.out.println("Connecting to '"+ host + "' ...");
}
}
2.2 Proxy
public class ProxyInternet implements Internet
{
private Internet internet = new RealInternet();
private static List<String> bannedSites;
static
{
bannedSites = new ArrayList<String>();
bannedSites.add("abc.com");
bannedSites.add("def.com");
bannedSites.add("ijk.com");
bannedSites.add("lnm.com");
}
@Override
public void connect(String host) throws Exception
{
if(bannedSites.contains(host.toLowerCase()))
{
throw new Exception("Access Denied: unable to connect to '" + host + "'");
}
internet.connect(host);
}
}
2.3 Client
public class ClientTest {
@Test
public void testClient() {
Internet internet = new ProxyInternet();
System.out.println("Internet is working now ...");
try
{
internet.connect("jojozhuang.github.io");
internet.connect("abc.com");
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
Output.
Internet is working now ...
Connecting to 'jojozhuang.github.io' ...
Access Denied: unable to connect to 'abc.com'