모든 클래스는 하나의 책임만 가진다.클래스는 그 책임을 완전히 캡슐화 해야한다.클래스가 제공하는 모든 기능은 이 책임과 부합.확장에 대해 열려 있어야 하고, 모듈의 동작을 확장할 수 있다는 것을 의미요구사항이 변경될 때, 새로운 동작을 추가해 모듈을 확장즉, 모듈이 하
객체의 내부 상태에 따라 스스로 행동을 변경상태를 클래스로 캡슐화하고, 상태 전환을 클래스 간의 참조 변경으로 처리게임에서는 캐릭터 애니메이션 상태, 네트워크 연결 상태, 툴 상태 등이 있다.유연한 상태전환: 상태를 캡슐화하여 상태 전환 로직을 각 상태 클래스에 분리상

MVC, MVP, MVVM패턴들은 UI와 로직의 분리가 목적인 패턴들이다.불필요한 종속 관계를 줄이는 패턴으로 아키텍쳐 패턴이라고도 불린다.결과적으로 최종 목표는 스타게티 코드가 되는 것을 방지하는 것이다.소개는 넘어가고 그래서 이게 뭐냐 하나씩 알아보자.MVC는 소프