프로그램에서 객체들은 저마다 수행해야 할 역할이 존재하는데 몇몇 객체들의 경우에는 너무 많은 역할을 수행해야 하거나, 부여된 역할을 수행하기 위해 여러 가지 복잡한 과정을 거쳐야 할 수 있다. 이 같은 경우 그냥 해당 객체가 모든 역할이나 작업을 수행하도록 하면 그 객체의 구현이나 유지, 보수는 굉장히 어려워질 것이다. 반면 실세계의 대리 체제처럼 복잡하거나 다양한 작업을 대신 수행해줄 수 있는 객체를 정의하고 사용한다면 전반적인 구현이나 유지, 보수 등이 오히려 손쉬울 수 있다. 왜냐하면 복잡하고 다양한 작업이 대리 객체에 의해 숨겨질 수 있기 때문이다. 문제 사례 설명 인터넷에서 웹으로 만화 서비스를 제공하는 경우 만화 서비스는 텍스트로 구성된 일반적인 웹페이지에 비해 데이터량이 많은 이미지 파일로 ..