디자인 패턴
- 디자인 패턴: 프로그램을 설계할 때 발생했던 문제들을 해결할 수 있는 솔루션을 규약 형태로 만들어 놓은 것이다.
싱글톤 패턴
- 싱글톤 패턴: 하나의 클래스의 오직 하나의 인스턴스만 가지는 패턴이다. 데이터베이스 연결 모듈에 많이 사용한다. 이를 통해 DB 연결에 대한 인스턴스 생성 비용을 절감할 수 있다.
- 단점: TDD
- TDD를 할 때 단위 테스트를 수행하는데, 단위 테스트는 테스트가 서로 독립적이어야 하고 테스트를 어떤 순서로든 실행할 수 있어야 한다. 하지만 싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하는 패턴이므로 각 테스트마다 독립적인 인스턴스를 만들기 어렵다.
- 유의: 싱글톤 패턴은 모듈 간의 결합을 강하게 만든다. 의존성 주입을 통해 모듈 간의 결합을 느슨하게 만들어서 해결한다. (decoupling)
- 단점: TDD
팩토리 패턴
- 팩토리 패턴: 인터페이스가 객체를 정의하고 구현 클래스가 인스턴스를 생성한다. 즉, 인스턴스 생성을 서브 클래스에게 일임하는 것이다.
- 장점
- 슈퍼 클래스와 서브 클래스가 분리되기 때문에 느슨한 결합을 가진다.
- 상위 클래스에서는 인스턴스 생성 방식에 대해 알 필요가 없기 때문에 유연성이 증가한다.
- 객체 생성 로직이 분리되어 있기 때문에 코드 리팩토링 시 한 곳만 고치면 되므로 유지 보수성이 증가한다.
- 장점
어댑터 패턴
- 어댑터 패턴: 어댑터는 변환기라는 뜻이다. 충전기가 휴대폰을 콘센트를 연결하는 것처럼 클래스의 서로 관계없는 인터페이스들을 클라이언트가 원하는 형태로 인터페이스를 변환하여 함께 사용할 수 있다.
MVC 패턴
- MVC 패턴: Model, View, Controller로 이루어진 디자인 패턴이다. 애플리케이션의 구성 요소를 세 가지 역할로 구분해서 개발 프로세서 각각의 구성 요소에만 집중해서 개발할 수 있다.
- 장점: 재사용성과 확장성이 용이하다.
- 단점: 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다.
- Model: 애플리케이션의 데이터이터인 데이터베이스와 자원을 다루는 클래스다.
- View: 사용자가 볼 수 있는 화면이다.
- Controller: Models와 Views를 이어주는 다리 역할을 하며 메인 로직을 담당한다. Models이나 Views의 response를 받으면 각각의 구성 요소에 전달한다.
View에서 데이터를 생성 또는 수정하면 Controller를 통해 Model을 생성하거나 갱신한다.
라이브러리와 프레임워크는 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것이다.
- 라이브러리: 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 자원의 모임. 즉 특정 기능을 가진 코드, 함수들의 집합이다.
- 프레임워크: 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대이다.
참조
면접을 위한 CS 전공지식 노트
[개발상식] 프레임워크(Framework) 와 라이브러리(Library)의 차이
[Design pattern] 디자인 패턴의 정의와 장점
디자인패턴 - 팩토리 패턴 (factory pattern)