상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
영양부족의 전세계적 현황은?
영양부족 및 영양 관련 정보의 출처는?
흰우유의 칼로리는 얼마나 되나요?
AI로봇: 6가지 이유로 사회 복지 시스템에 기여한다!
AI와 노인 돌봄 서비스의 혁신 가능성은?
생수1리터의 수원지는 어디인가요?
위내시경 전 준비사항은 무엇인가요?
복부CT 검사로 건강을 지키는 7가지 방법
"다이어트약: 6주 만에 놀라운 변화를 가져온 방법"
"다이어트약: 8가지 효과를 직접 체험해보자!"
"다이어트약: 모든 연령대에 적합한 4가지 추천"
중장년일자리와 창의력: 6가지 이유로 끊임없이 배우자!
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순위입니다.
수정하기
취소하기