SOLID 완벽 마스터

SOLID의 핵심 개념과 실전 활용법

TypeScript중급
12시간
10개 항목
학습 진행률0 / 10 (0%)

학습 항목

1. TypeScript
중급
Bridge|Pattern|실전|프로젝트|가이드
퀴즈튜토리얼
2. TypeScript
고급
Dependency|Injection|기초부터|심화까지
퀴즈튜토리얼
3. TypeScript
고급
Dependency|Injection|베스트|프랙티스
퀴즈튜토리얼
4. TypeScript
초급
Dependency|Injection|핵심|개념|완벽|정리
퀴즈튜토리얼
5. TypeScript
중급
Factory Pattern 핵심 개념 완벽 정리
퀴즈튜토리얼
6. TypeScript
고급
Memento|Pattern|최신|기능|완벽|가이드
퀴즈튜토리얼
7. TypeScript
초급
SOLID|원칙|실무|활용|완벽|가이드
퀴즈튜토리얼
8. TypeScript
초급
SOLID|원칙|실전|프로젝트|완벽|가이드
퀴즈튜토리얼
9. TypeScript
고급
SOLID|트러블슈팅|실전|가이드
퀴즈튜토리얼
10. TypeScript
고급
Visitor|Pattern|베스트|프랙티스
퀴즈튜토리얼
1 / 10

이미지 로딩 중...

Bridge Pattern 실전 프로젝트 가이드 - 슬라이드 1/9

Bridge Pattern 실전 프로젝트 가이드

구현부와 추상부를 분리하여 독립적으로 확장 가능한 Bridge 패턴을 실전 예제로 배워봅니다. 알림 시스템을 통해 Bridge 패턴의 핵심 원리와 활용법을 이해할 수 있습니다.


카테고리:TypeScript
언어:TypeScript
난이도:intermediate
메인 태그:#TypeScript
서브 태그:
#BridgePattern#DesignPatterns#SOLID#Abstraction

들어가며

이 글에서는 Bridge Pattern 실전 프로젝트 가이드에 대해 상세히 알아보겠습니다. 총 8가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Bridge_Pattern_기본_구조
  2. 구현부_다양한_발송_방식
  3. 추상부_알림_타입_정의
  4. Bridge_Pattern_실전_활용
  5. 새로운_발송_방식_추가
  6. 새로운_알림_타입_추가
  7. 발송_옵션_기능_추가
  8. 실전_알림_시스템_구현

1. Bridge_Pattern_기본_구조

개요

Bridge 패턴은 추상화와 구현을 분리하여 각각 독립적으로 변경할 수 있게 합니다. 두 계층을 연결하는 다리 역할을 합니다.

코드 예제

interface MessageSender {
  send(message: string): void;
}

abstract class Notification {
  constructor(protected sender: MessageSender) {}
  abstract notify(message: string): void;
}

설명

MessageSender 인터페이스가 구현부, Notification이 추상부입니다. 추상부가 구현부를 참조하여 브릿지를 형성합니다.


2. 구현부_다양한_발송_방식

개요

구현부에서는 실제 메시지 전송 방식을 정의합니다. 이메일, SMS, 푸시 알림 등 다양한 방식을 독립적으로 구현할 수 있습니다.

코드 예제

class EmailSender implements MessageSender {
  send(message: string): void {
    console.log(`📧 Email: ${message}`);
  }
}

class SMSSender implements MessageSender {
  send(message: string): void {
    console.log(`📱 SMS: ${message}`);
  }
}

설명

각 발송 방식은 MessageSender 인터페이스를 구현하여 독립적으로 동작합니다. 새로운 발송 방식 추가가 쉽습니다.


3. 추상부_알림_타입_정의

개요

추상부에서는 알림의 종류를 정의합니다. 긴급, 일반, 마케팅 알림 등 비즈니스 로직에 따라 다르게 처리됩니다.

코드 예제

class UrgentNotification extends Notification {
  notify(message: string): void {
    console.log('🚨 긴급 알림!');
    this.sender.send(`[긴급] ${message}`);
  }
}

class NormalNotification extends Notification {
  notify(message: string): void {
    this.sender.send(`[알림] ${message}`);
  }
}

설명

알림 타입은 추상 클래스를 상속받아 각자의 방식으로 메시지를 포맷팅하고 전송합니다.


4. Bridge_Pattern_실전_활용

개요

추상부와 구현부를 조합하여 다양한 알림 시스템을 구성할 수 있습니다. 코드 수정 없이 조합만으로 새로운 기능을 만듭니다.

코드 예제

const emailUrgent = new UrgentNotification(
  new EmailSender()
);
emailUrgent.notify('서버 다운');

const smsNormal = new NormalNotification(
  new SMSSender()
);
smsNormal.notify('새 메시지 도착');

설명

알림 타입과 발송 방식을 자유롭게 조합하여 사용합니다. 4가지 조합(2×2)이 코드 수정 없이 가능합니다.


5. 새로운_발송_방식_추가

개요

Bridge 패턴의 장점은 확장성입니다. 기존 코드를 수정하지 않고 새로운 발송 방식을 추가할 수 있습니다.

코드 예제

class PushSender implements MessageSender {
  send(message: string): void {
    console.log(`🔔 Push: ${message}`);
  }
}

const pushUrgent = new UrgentNotification(
  new PushSender()
);
pushUrgent.notify('결제 완료');

설명

PushSender만 추가하면 모든 알림 타입에서 푸시 발송을 사용할 수 있습니다. 개방-폐쇄 원칙(OCP)을 준수합니다.


6. 새로운_알림_타입_추가

개요

발송 방식뿐만 아니라 알림 타입도 독립적으로 확장할 수 있습니다. 비즈니스 요구사항에 따라 유연하게 대응합니다.

코드 예제

class MarketingNotification extends Notification {
  notify(message: string): void {
    console.log('📢 마케팅 메시지');
    this.sender.send(`[광고] ${message} 🎁`);
  }
}

const marketingEmail = new MarketingNotification(
  new EmailSender()
);

설명

새로운 알림 타입을 추가해도 기존 발송 방식을 모두 활용할 수 있습니다. 코드 재사용성이 극대화됩니다.


7. 발송_옵션_기능_추가

개요

구현부에 추가 기능을 넣어 더욱 풍부한 발송 옵션을 제공할 수 있습니다. 재시도, 로깅 등의 기능을 추가합니다.

코드 예제

class ReliableSender implements MessageSender {
  constructor(private baseSender: MessageSender) {}

  send(message: string): void {
    console.log('📝 로그 기록 중...');
    this.baseSender.send(message);
    console.log('✅ 전송 완료');
  }
}

설명

데코레이터 패턴과 결합하여 기존 발송자를 감싸서 추가 기능을 제공합니다. 책임의 연쇄가 가능합니다.


8. 실전_알림_시스템_구현

개요

Bridge 패턴을 활용한 완전한 알림 시스템입니다. 다양한 조합으로 유연하고 확장 가능한 시스템을 구축합니다.

코드 예제

class NotificationService {
  send(type: string, channel: string, msg: string) {
    const sender = this.getSender(channel);
    const notification = this.getNotification(type, sender);
    notification.notify(msg);
  }

  private getSender(channel: string): MessageSender {
    // 팩토리 패턴 활용
  }
}

설명

서비스 레이어에서 Bridge 패턴을 활용하여 런타임에 동적으로 알림 조합을 생성합니다. 유지보수가 쉬운 구조입니다. --- Bridge Pattern의 핵심은 추상화와 구현의 분리입니다. 이를 통해 각각을 독립적으로 확장할 수 있어 SOLID 원칙을 준수하는 유연한 시스템을 만들 수 있습니다! 🌉


마치며

이번 글에서는 Bridge Pattern 실전 프로젝트 가이드에 대해 알아보았습니다. 총 8가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#TypeScript #BridgePattern #DesignPatterns #SOLID #Abstraction

#TypeScript#BridgePattern#DesignPatterns#SOLID#Abstraction