스테이트 패턴
내부 상태를 나타내는 객체가 컨텍스트 객체의 행동을 결정한다.
내부 상태를 나타내는 객체가 컨텍스트 객체의 행동을 결정한다.
컬랙션의 세부사항을 몰라도 그 안에 들어있는 모든 항목에 접근하는 방법을 제공한다.
전체 알고리즘은 상위 클래스에서 구현하면서 특정 부분은 서브 클래스에서 구현하게 하는 패턴
복잡한 인터페이스들을 쓰기 쉬운 하나의 인터페이스로 단순화한다.
어댑터 패턴은 코드 변경 없이 한 인터페이스를 다른 인터페이스에서 사용할 수 있게 한다.