꿀똥벌레
꿀똥벌레 개발 블로그
꿀똥벌레
전체 방문자
오늘
어제
  • 분류 전체보기 (90)
    • JAVA (17)
    • SPRING (14)
    • Elasticsearch (4)
    • GRADLE (2)
    • HTML, CSS (0)
    • JAVASCRIPT (0)
    • GIT (1)
    • Vue.js (1)
    • server (1)
    • Python (0)
    • IT리뷰 (0)
    • 인프라 (6)
    • IOS (21)
    • 디자인패턴 (20)
    • Kafka (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • mappings
  • springintegration
  • spring
  • maxConnPerRoute
  • 스프링 인테그레이션
  • java
  • Index
  • Index Template
  • SWIFT
  • ES
  • maxConnTotal
  • 엘라스틱서치
  • KEEPALIVE
  • connectionRequestTimeout
  • 스프링 인티그레이션
  • persistence connection
  • elasticsearch
  • persistent connection
  • spring integration
  • 인덱스 템플릿

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
꿀똥벌레

꿀똥벌레 개발 블로그

(행동패턴) 전략 패턴
디자인패턴

(행동패턴) 전략 패턴

2023. 5. 10. 22:40

전략패턴

알고리즘 군을 별도 클래스로 정의하여, 알고리즘을 상호 교환할 수 있도록 만드는 패턴

사용 시점 및 이유

  • 하나의 클래스가 많은 로직을 갖고 그 로직이 여러개의 조건으로 인해 분기하여 복잡해질 때
  • 내부 구현이 조금 다를뿐 개념적으론 관련된 클래스들이 존재할 때
  • 사용자에게 알고리즘을 캡슐화 하고, 그 알고리즘을 다른 클래스에서도 재사용 하고 싶을 때
  • 서브클래싱을 하지 않고 기능 확장을 하고 싶을 때

구현

  • Context는 사용자의 요청 을 전략객체로 전달하여 로직을 수행한다.
  • Context의 정보를 Strategy에서 알아야 할 때가 있는데, Strategy 인터페이스에서 파라미터를 정교하게 설계하거나, Strategy 클래스들이 Context 클래스에 의존하도록 할 수도 있다.
  • 두번째 방식은 Context와 Strategy 객체들 간 결합도가 생길 수 있으므로 주의가 필요하다.
  • Strategy객체를 사용할지 말지 선택성을 부여할 수도 있다. Context에서 Strategy 보유 유무를 판단하고, 보유하지 않으면 디폴트 구현을 수행하도록 할 수도 있다.
저작자표시 (새창열림)

'디자인패턴' 카테고리의 다른 글

(행동패턴) 비지터(방문자) 패턴  (0) 2023.05.11
(행동패턴) 템플릿메서드 패턴  (0) 2023.05.10
(행동패턴) 상태 패턴  (0) 2023.05.08
(행동패턴) 옵저버 패턴  (0) 2023.05.08
(행동패턴) 메멘토 패턴  (0) 2023.05.08
    꿀똥벌레
    꿀똥벌레
    개발자 꿀똥벌레 입니다.

    티스토리툴바