Proxy — control access to object.
Implementation:
1public interface IImage2{3 void Display();4}56public class RealImage : IImage7{8 public void Display() => Console.WriteLine("Displaying image");9}1011public class ProxyImage : IImage12{13 private RealImage _real;14 private readonly string _filename;1516 public ProxyImage(string filename) => _filename = filename;1718 public void Display()19 {20 if (_real == null)21 _real = new RealImage();22 _real.Display();23 }24}
Key: Proxy for lazy loading, access control.