스트래티지 패턴.
상속을 한 클래스에서 변경이 될수있는 특정매서드를 클래스 하나로 묶어서 그걸 운용하는 패턴
오리는 헤엄친다
청둥오리 집오리 는 헤엄치는게 가능.
하지만 로봇오리는 헤엄치지 못한다.
여기서 헤엄치는걸 헤엄치다와 헤엄치지 못하다로 나뉘고 ‘헤엄’이라는 클래스를 만들어 그 안에 [헤엄치다]와 [헤엄치지못하다]라는 메서드를 만든다.
나중에 헤엄에 또다른 기능이 추가되면 바꿀수가 있다. 부모메서드와는 다른 개념으로 이해해야한다.
스트래티지 패턴이란
- 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
- 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴
- ‘행위(Behavioral) 패턴’의 하나 (아래 참고)
- 즉, 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다.
- 전략이란
- 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등
- 전략이란
- 특히 게임 프로그래밍에서 게임 캐릭터가 자신이 처한 상황에 따라 공격이나 행동하는 방식을 바꾸고 싶을 때 스트래티지 패턴은 매우 유용하다.
- 역할이 수행하는 작업
- Strategy
- 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시
- ConcreteStrategy
- 스트래티지 패턴에서 명시한 알고리즘을 실제로 구현한 클래스
- Context
- 스트래티지 패턴을 이용하는 역할을 수행한다.
- 필요에 따라 동적으로 구체적인 전략을 바꿀 수 있도록 setter 메서드(‘집약 관계’)를 제공한다.
- Strategy
참고
- 행위(Behavioral) 패턴
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
- 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.
- 집약 관계
- 참조값을 인자로 받아 필드를 세팅하는 경우
- 전체 객체의 라이프타임과 부분 객체의 라이프 타임은 독립적이다.
- 즉, 전체 객체가 메모리에서 사라진다 해도 부분 객체는 사라지지 않는다.
예시
로봇 만들기
출처 : https://gmlwjd9405.github.io/2018/07/06/strategy-pattern.html
'공부계획' 카테고리의 다른 글
200901 오늘날씨 프로젝트 목표 (0) | 2020.08.27 |
---|---|
200805 목표(비대면 오디션 사이트) (0) | 2020.08.05 |
블로그 작성할 내역 (0) | 2020.05.13 |
텍스트 게시판 기능 만들기 (0) | 2020.05.08 |
2020년 4월 14일 JAVA 공부 계획 (0) | 2020.04.14 |
댓글