Proxy
Proporciona un objeto que representa a otro y controla
el acceso al mismo.

// "Subject"
abstract class Subject
{
// Methods
abstract public void Request();
}
// "RealSubject"
class RealSubject : Subject
{
// Methods
override public void Request()
{
Console.WriteLine("Called RealSubject.Request()");
}
}
// "Proxy"
class Proxy : Subject
{
// Fields
RealSubject realSubject;
// Methods
override public void Request()
{
// Uses "lazy initialization"
if( realSubject == null )
realSubject = new RealSubject();
realSubject.Request();
}
}
/// Client test
public class Client
{
public static void Main( string[] args )
{
// Create proxy and request a service
Proxy p = new Proxy();
p.Request();
}
}