Comments
Adds a layer on-top of the interface derived class i.e. I call method to do something using no proxy does as expected using proxy can add extra functions (like a top-layer), why, provides no amendments to existing code.
Code
namespace IVSR.DesignPattern.Proxy { interface ICar { void DriveCar(); } //Real Object public class Car : ICar { public void DriveCar() { Console.WriteLine("Car has been driven!"); } } //Proxy Object public class ProxyCar : ICar { private Driver driver; private ICar realCar; public ProxyCar(Driver driver) { this.driver = driver; realCar = new Car(); } public void DriveCar() { if (driver.Age <= 16) Console.WriteLine("Sorry, the driver is too young to drive."); else realCar.DriveCar(); } } public class Driver { public int Age { get; set; } public Driver(int age) { this.Age = age; } } //How to use above Proxy class? private void btnProxy_Click(object sender, EventArgs e) { ICar car = new ProxyCar(new Driver(16)); car.DriveCar(); car = new ProxyCar(new Driver(25)); car.DriveCar(); } }
Sorry, the driver is too young to drive.
Car has been driven!