[typescript] 추상 클래스의 일반적인 사용 사례 및 패턴

추상 클래스는 TypeScript에서 객체지향 프로그래밍을 할 때 유용하게 활용될 수 있습니다. 이번 글에서는 추상 클래스의 일반적인 사용 사례와 주요 패턴에 대해 살펴보겠습니다.

목차

추상 클래스란 무엇인가요?

추상 클래스는 하나 이상의 추상 메소드를 포함하고 있는 클래스이며, 인스턴스를 생성할 수 없습니다. 대신, 이 클래스를 상속하는 파생 클래스에서 추상 메소드를 구현하여 사용합니다.

추상 클래스의 특징

추상 클래스의 사용 사례

추상 클래스는 다음과 같은 상황에서 유용하게 활용됩니다.

  1. 일반적인 동작을 정의하고 파생 클래스가 이를 확장하는 경우: 추상 클래스는 기본적인 구현을 제공하고 파생 클래스에서 이를 확장할 수 있도록 합니다.

     abstract class Shape {
         abstract draw(): void;
            
         // 일반적인 동작
         move() {
             console.log('Moving shape');
         }
     }
    
     class Circle extends Shape {
         draw() {
             console.log('Drawing circle');
         }
     }
    
  2. 인터페이스와 구현의 중간 단계일 때: 추상 클래스는 반드시 구현해야 하는 메소드를 포함하여 인터페이스와 클래스 사이의 중간 단계 역할을 할 수 있습니다.

     abstract class Printer {
         abstract printDocument(document: Document): void;
         // 다른 프린터 공통 동작
     }
    
     class LaserPrinter extends Printer {
         printDocument(document: Document) {
             // 레이저 프린터의 구체적인 동작
         }
     }
    

추상 클래스의 주요 패턴

추상 클래스는 다음과 같은 주요 패턴에서 활용됩니다.

  1. 템플릿 메소드 패턴: 추상 클래스 내에서 알고리즘의 뼈대를 정의하고, 파생 클래스에서 일부 단계를 구체화하는 패턴입니다.

  2. 팩토리 메소드 패턴: 추상 클래스의 서브 클래스에서 객체를 만들고 반환하는 메소드를 정의하는 패턴입니다.

  3. 전략 패턴: 추상 클래스와 구현 클래스를 구분하고 선택적으로 변경할 수 있는 패턴입니다.

추상 클래스의 이러한 사용 사례와 패턴을 활용하여 TypeScript에서 보다 유연하고 재사용 가능한 객체를 설계할 수 있습니다.

이상으로 추상 클래스의 일반적인 사용 사례 및 패턴에 대해 알아보았습니다. 감사합니다.

References