Multiple choice general knowledge

interface Image { void displayImage(); } //on System A class RealImage implements Image { private String filename; public RealImage(String filename) { this.filename = filename; loadImageFromDisk(); } private void loadImageFromDisk() { System.out.println("Loading " + filename); } public void displayImage() { System.out.println("Displaying " + filename); } } //on System B class Image2 implements Image { private String filename; private RealImage image; public Image2(String filename) { this.filename = filename; } public void displayImage() { if (image == null) { image = new RealImage(filename); } image.displayImage(); } } class Example2 { public static void main(String[] args) { Image image1 = new Image2("HiRes_10MB_Photo1"); Image image3 = new Image2("HiRes_10MB_Photo2"); image1.displayImage(); // loading necessary image3.displayImage(); // loading necessary image1.displayImage(); // loading unnecessary } } Which design pattern does this code indicate?

  1. Memento

  2. Command

  3. Builder

  4. Proxy

Reveal answer Fill a bubble to check yourself
D Correct answer
Explanation

The Image2 class acts as a proxy, creating RealImage lazily (only on first use) and then delegating calls. This avoids loading expensive resources until needed and reuses the loaded object for subsequent calls, classic Proxy pattern.