Model, View, Controller로 구성되어 있는 디자인 패턴입니다. 세 가지로 나뉘어 각자의 역할에 맞게 프로그래밍을 구성할 수 있고 재사용성과 확장성이 용이하다는 장점이 있습니다. 하지만 애플리케이션이 복잡해지면 Model과 View가 복잡해지는 단점이 있습니다.
하나의 클래스로 하나의 인스턴스만 생성해서 이를 기반으로 로직에 쓰이게 됩니다. 싱글톤 패턴을 사용하게 되면 하나의 인스턴스에 여러 모듈들에게 공유가 되어 인스턴스를 생성할 때 드는 비용이 줄어들게 됩니다. 하지만 의존성이 높아진다는 것이 단점입니다.