객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴 궁극적으론 유지보수와 개발효율의 증대를 위해 사용한다.기본적으로 각각의 역할을 나눠 기능들을 만들고 그 기능들로 해야할 일을 한번에 처리해주는 클래스를 만드는 형식위 같은 설명보다