필드로 부모스트레지를 갖는다.
세터로 받는 메소드가있다.
행위메소드에서 스트레지클래스에 위임한다.
전략 패턴은 알고리즘을 객체로 분리하여 구현하는 디자인 패턴입니다. 이를 통해 애플리케이션의 핵심 기능과 알고리즘을 분리하여, 알고리즘을 변경하거나 확장하기 쉽도록 합니다.
전략 패턴은 다양한 프레임워크에서 적용되고 있습니다. 대표적인 예로는 다음과 같은 것들이 있습니다.
MessageConverter
스프링의 MessageConverter
는 HTTP 요청/응답의 메시지 바디를 변환하는 역할을 합니다. MessageConverter
인터페이스를 구현한 클래스는 다양한 메시지 포맷을 지원합니다. 예를 들어, Jackson2HttpMessageConverter
클래스는 JSON 포맷을 지원하고, XmlHttpMessageConverter
클래스는 XML 포맷을 지원합니다.
MessageConverter
는 전략 패턴을 사용하여 구현되었습니다. MessageConverter
인터페이스는 알고리즘을 정의하는 추상 메서드 convert()
를 제공합니다. 각 MessageConverter
구현체는 convert()
메서드를 구현하여 특정 메시지 포맷을 변환하는 알고리즘을 제공합니다.
Logback
스프링의 Logback
은 로그를 기록하는 프레임워크입니다. Logback
은 다양한 로그 기록 방식을 지원합니다. 예를 들어, ConsoleAppender
클래스는 콘솔에 로그를 기록하고, FileAppender
클래스는 파일에 로그를 기록합니다.
Logback
은 전략 패턴을 사용하여 구현되었습니다. Appender
인터페이스는 알고리즘을 정의하는 추상 메서드 append()
를 제공합니다. 각 Appender
구현체는 append()
메서드를 구현하여 특정 로그 기록 방식을 구현합니다.
Comparator
자바의 Comparator
인터페이스는 객체를 비교하는 알고리즘을 제공합니다. Comparator
인터페이스를 구현한 클래스는 다양한 기준으로 객체를 비교할 수 있습니다. 예를 들어, NaturalOrderComparator
클래스는 객체의 문자열 표현을 기준으로 비교합니다.
Comparator
은 전략 패턴을 사용하여 구현되었습니다. Comparator
인터페이스는 알고리즘을 정의하는 추상 메서드 compare()
를 제공합니다. 각 Comparator
구현체는 compare()
메서드를 구현하여 특정 기준으로 객체를 비교하는 알고리즘을 제공합니다.