Uma aplicação Java deve oferecer suporte para que os serviços disponibilizados por objetos que consomem muitos recursos possam ser requisitados, indiretamente, pelas demais classes (clientes) dessa aplicação. As soluções para esse
problema de design devem impedir que esses objetos sejam diretamente referenciados pelos clientes, pois eles só devem
ser instanciados quando seus serviços forem realmente solicitados.
A solução que a equipe de desenvolvimento propôs irá fornecer substitutos para esses objetos reais, de modo a controlar
o acesso a eles. As classes dos objetos reais e dos objetos substitutos devem implementar uma mesma interface. Dessa
forma, os substitutos servirão de representantes dos objetos reais. Eles receberão requisições dos clientes e as delegarão
aos objetos reais.
A solução proposta pela equipe de desenvolvimento foi baseada no padrão de projeto