[typescript] 추상 클래스를 사용한 비즈니스 로직 분리하기

소프트웨어 개발에 있어서 비즈니스 로직을 분리하여 유지보수성을 높이고 확장성을 개선하는 것은 매우 중요합니다. 추상 클래스를 사용하여 비즈니스 로직을 추상화하고 모듈화하는 방법을 알아보겠습니다.

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

추상 클래스란 하위 클래스에서 상속받아 구현할 메서드를 정의하거나 일반적인 메서드를 구현할 수 있는 클래스입니다. 클래스 내에 추상 메서드가 하나 이상 포함되어 있을 때만 그 클래스를 추상 클래스로 선언할 수 있습니다.

언제 추상 클래스를 사용해야 하나요?

추상 클래스는 비즈니스 영역에서 공통 기능을 가진 서브 클래스들을 그룹화하고 공통 로직을 수행할 수 있도록 할 때 사용됩니다. 이를 통해 코드 중복을 최소화하고 일관성 있는 인터페이스를 제공할 수 있습니다.

TypeScript에서 추상 클래스를 활용하기

아래는 TypeScript에서 추상 클래스를 사용하여 간단한 주문 처리 비즈니스 로직을 분리하는 예시입니다.

abstract class OrderProcessor {
  abstract validateOrder(): boolean;
  abstract calculateTotal(): number;

  processOrder(): void {
    if (this.validateOrder()) {
      const total = this.calculateTotal();
      console.log(`Order validated. Total amount: $${total}`);
    } else {
      console.log(`Invalid order.`);
    }
  }
}

class OnlineOrderProcessor extends OrderProcessor {
  validateOrder(): boolean {
    // Validate order for online purchase
    return true;
  }

  calculateTotal(): number {
    // Calculate total amount for online order
    return 100;
  }
}

class InStoreOrderProcessor extends OrderProcessor {
  validateOrder(): boolean {
    // Validate order for in-store purchase
    return true;
  }

  calculateTotal(): number {
    // Calculate total amount for in-store order
    return 120;
  }
}

const onlineOrderProcessor = new OnlineOrderProcessor();
onlineOrderProcessor.processOrder();

const inStoreOrderProcessor = new InStoreOrderProcessor();
inStoreOrderProcessor.processOrder();

위의 예시에서 OrderProcessor추상 클래스로, 주문 처리에 필요한 validateOrdercalculateTotal 메서드를 추상적으로 정의합니다. 실제 구현은 이 추상 클래스를 상속받는 OnlineOrderProcessorInStoreOrderProcessor에서 이루어집니다.

마치며

추상 클래스를 사용하여 비즈니스 로직을 모듈화하고 추상화함으로써 코드의 재사용성과 확장성을 향상시킬 수 있습니다. 특히 TypeScript와 같은 정적 타입 언어에서 추상 클래스를 적극적으로 활용함으로써 유지보수성을 높일 수 있습니다.

참고문헌: