어떤 사람이 길을 묻는다고 생각해봅시다.
구체적인 길을 직접 알려주는 방법은 현재의 요구만을 만족시킬 수 있습니다. 반면, 지도를 제공하는 경우에는 새로운 목적까지도 만족시킬 수 있습니다.
즉, 기능이 아니라 구조를 기반으로 모델을 구축하는 편이 범용적이고, 재사용성이 높으며, 변경에 안정적입니다.
소프트웨어 분야에서, 요구 사항은 예측 불가능하게 변경됩니다. 미래의 변경을 예측할 수는 없지만, 미래의 변경에 대비할 수는 있으므로 변경을 수용할 수 있는 여지를 설계에 마련해 두어야 합니다.
기능을 중심으로 설계하는 전통적인 설계와 달리, 객체지향 접근방법은 자주 변경되지 않는 안정적인 객체 구조를 바탕으로 시스템 기능을 객체 간의 책임으로 분배합니다. 기능이 변경되더라도, 객체 간의 구조는 그대로 유지됩니다.
객체지향 세계를 구축하기 위해서는, 사용자에게 제공할 '기능'과 기능을 담을 안정적인 '구조'가 필요합니다.