[typescript] 추상 클래스의 일반적인 사용 사례 및 패턴
추상 클래스는 TypeScript에서 객체지향 프로그래밍을 할 때 유용하게 활용될 수 있습니다. 이번 글에서는 추상 클래스의 일반적인 사용 사례와 주요 패턴에 대해 살펴보겠습니다.
목차
추상 클래스란 무엇인가요?
추상 클래스는 하나 이상의 추상 메소드를 포함하고 있는 클래스이며, 인스턴스를 생성할 수 없습니다. 대신, 이 클래스를 상속하는 파생 클래스에서 추상 메소드를 구현하여 사용합니다.
추상 클래스의 특징
- 인스턴스를 생성할 수 없습니다.
- 하나 이상의 추상 메소드를 포함할 수 있습니다.
- 파생 클래스에서 추상 메소드를 구현해야 합니다.
추상 클래스의 사용 사례
추상 클래스는 다음과 같은 상황에서 유용하게 활용됩니다.
-
일반적인 동작을 정의하고 파생 클래스가 이를 확장하는 경우: 추상 클래스는 기본적인 구현을 제공하고 파생 클래스에서 이를 확장할 수 있도록 합니다.
abstract class Shape { abstract draw(): void; // 일반적인 동작 move() { console.log('Moving shape'); } } class Circle extends Shape { draw() { console.log('Drawing circle'); } }
-
인터페이스와 구현의 중간 단계일 때: 추상 클래스는 반드시 구현해야 하는 메소드를 포함하여 인터페이스와 클래스 사이의 중간 단계 역할을 할 수 있습니다.
abstract class Printer { abstract printDocument(document: Document): void; // 다른 프린터 공통 동작 } class LaserPrinter extends Printer { printDocument(document: Document) { // 레이저 프린터의 구체적인 동작 } }
추상 클래스의 주요 패턴
추상 클래스는 다음과 같은 주요 패턴에서 활용됩니다.
-
템플릿 메소드 패턴: 추상 클래스 내에서 알고리즘의 뼈대를 정의하고, 파생 클래스에서 일부 단계를 구체화하는 패턴입니다.
-
팩토리 메소드 패턴: 추상 클래스의 서브 클래스에서 객체를 만들고 반환하는 메소드를 정의하는 패턴입니다.
-
전략 패턴: 추상 클래스와 구현 클래스를 구분하고 선택적으로 변경할 수 있는 패턴입니다.
추상 클래스의 이러한 사용 사례와 패턴을 활용하여 TypeScript에서 보다 유연하고 재사용 가능한 객체를 설계할 수 있습니다.
이상으로 추상 클래스의 일반적인 사용 사례 및 패턴에 대해 알아보았습니다. 감사합니다.