상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
어린이 치과에서 접종 서비스는 제공되나요?
치과검진에서 어떤 검사를 받을 수 있나요?
치과검진 시 소아치과 전문의를 찾아야 할까요?
치과에서 사용하는 엑스레이는 어떤 역할을 하나요?
이마 보톡스를 설정된 주기로 맞는 이유는?
치아 충치가 생기지 않도록 하는 플라그 관리 방법은?
치아 충치로 고통받는 경우 어떤 전문가에게 가야 하나요?
눈가주름을 최소화하기 위해 사용하는 안티에이징 화장품은 어떤 것이 좋나요?
눈가주름 제거를 위한 전통적인 방법은 어떤 것이 있나요?
눈가주름과 혈행의 관계는 어떤 것인가요?
사랑니 통증이 지속되면 만성 통증으로 발전할 가능성이 있나요?
다한증이 직장에서의 업무 능력에 미치는 영향은 무엇인가요?
Previous
Next
수정하기 - 전략 패턴의 사용 예시는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
전략 패턴(Strategy Pattern)은 객체 지향 프로그래밍에서 알고리즘을 정의하고 이를 캡슐화하여 서로 교환 가능하게 만드는 디자인 패턴입니다. 이 패턴은 특정 작업을 수행하는 여러 알고리즘을 정의하고, 클라이언트 코드가 이 알고리즘을 동적으로 선택할 수 있도록 합니다. 전략 패턴은 주로 알고리즘의 변동성이 클 때, 또는 알고리즘을 독립적으로 변경하고 싶을 때 유용합니다. 사용 <a href='https://sangseek.com/sangseeks/예시/ko'>예시</a> 1. 정렬 알고리즘 : 다양한 정렬 알고리즘(버블 정렬, 퀵 정렬, 병합 정렬 등)을 구현할 때 전략 패턴을 사용할 수 있습니다. 클라이언트는 원하는 정렬 알고리즘을 선택하여 데이터를 정렬할 수 있습니다. ```python class SortStrategy: def sort(self, data): pass class BubbleSort(SortStrategy): def sort(self, data): 버블 정렬 알고리즘 구현 pass class QuickSort(SortStrategy): def sort(self, data): 퀵 정렬 알고리즘 구현 pass class Context: def __init__(self, strategy: SortStrategy): self.strategy = strategy def set_strategy(self, strategy: SortStrategy): self.strategy = strategy def sort_data(self, data): return self.strategy.sort(data) 사용 예 context = Context(BubbleSort()) sorted_data = context.sort_data([5, 2, 9, 1]) context.set_strategy(QuickSort()) sorted_data = context.sort_data([5, 2, 9, 1]) ``` 2. 결제 시스템 : 다양한 결제 방법(신용카드, 페이팔, 비트<a href='https://sangseek.com/sangseeks/코인/ko'>코인</a> 등)을 지원하는 전자상거래 애플리케이션에서 전략 패턴을 사용할 수 있습니다. 사용자는 결제 방법을 선택하고, 해당 방법에 따라 결제 프로세스가 진행됩니다. ```python class PaymentStrategy: def pay(self, amount): pass class CreditCardPayment(PaymentStrategy): def pay(self, amount): 신용카드 결제 로직 print(f"Paying {amount} using Credit Card.") class PayPalPayment(PaymentStrategy): def pay(self, amount): 페이팔 결제 로직 print(f"Paying {amount} using PayPal.") class ShoppingCart: def __init__(self, payment_strategy: PaymentStrategy): self.payment_strategy = payment_strategy def set_payment_strategy(self, payment_strategy: PaymentStrategy): self.payment_strategy = payment_strategy def checkout(self, amount): self.payment_strategy.pay(amount) 사용 예 cart = ShoppingCart(CreditCardPayment()) cart.checkout(100) cart.set_payment_strategy(PayPalPayment()) cart.checkout(200) ``` 3. 게임 AI : 게임에서 적의 행동을 결정하는 AI를 구현할 때 전략 패턴을 사용할 수 있습니다. 적은 상황에 따라 공격, 방어, 도망 등의 행동을 선택할 수 있습니다. ```python class BehaviorStrategy: def execute(self): pass class AggressiveBehavior(BehaviorStrategy): def execute(self): print("Attacking the player!") class DefensiveBehavior(BehaviorStrategy): def execute(self): print("Defending against the player!") class Enemy: def __init__(self, behavior: BehaviorStrategy): self.behavior = behavior def set_behavior(self, behavior: BehaviorStrategy): self.behavior = behavior def act(self): self.behavior.execute() 사용 예 enemy = Enemy(AggressiveBehavior()) enemy.act() enemy.set_behavior(DefensiveBehavior()) enemy.act() ``` 장점 - 유연성 : 알고리즘을 독립적으로 변경할 수 있어 코드의 유연성이 증가합니다. - 재사용성 : 알고리즘을 캡슐화하여 재사용할 수 있습니다. - 확장성 : 새로운 알고리즘을 추가할 때 기존 코드를 수정할 필요가 없습니다. 단점 - 복잡성 증가 : 전략 패턴을 사용하면 클래스의 수가 증가하여 코드가 복잡해질 수 있습니다. - 클라이언트 코드의 의존성 : 클라이언트 코드가 전략 객체에 의존하게 되어, 전략 객체의 변경이 클라이언트 코드에 영향을 줄 수 있습니다. 전략 패턴은 다양한 상황에서 유용하게 사용될 수 있으며, 알고리즘의 변경이 잦거나 다양한 알고리즘을 지원해야 하는 경우에 특히 효과적입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기