행위를 캡슐화 해 자유롭게 변경 할 수 있게 만든 패턴
전략 을 쉽게 바꿀 수 있게 만들어 준다.
코드로 이해를 해보자

여기 추상 클래스 Bird가 있다.
새는 기본적으로 말하기 기능과 이동 기능이 있다고 하자


그리고 Bird 를 상속받는 Pigeon 과 Chicken 클래스가 있다고 하자.
이 코드에 문제점이 어떤게 있을까?
첫번째로 새로운 객체가 생겼을때 move 메소드 로직이 Chicken 로직과 동일하다고 한다면
중복된 코드가 발생 한다는 문제가 생기고
두번째로 기획이 변경돼서 Chicken 클래스의 move 기능이 변경된다면 기존 move 메소드의
로직을 변경해야 하는데 이건 확장엔 열고 수정엔 닫는 OCP 설계 규칙에 위반되게 된다.
그럼 이제 이 코드를 전략 패턴을 사용해 변경해보자
먼저 전략들을 생성하자

인터페이스 하나에

여러 로직들을 구현시켜둔다.

인터페이스를 composition 해두고
해당 인터페이스를 구현한 객체(전략) 중 어떤 객체를 사용할지 setter 를 만들어둔다.
어떤 전략을 사용할지 동적으로 정할 수 있다.

이런 방식으로 전략을 쉽게 변경 시킬 수 있는 패턴이다.
전략 로직의 중복 코드가 발생하지않고,
새로운 기능이 추가 되더라도 기능을 쉽게 구현시킬 수 있다.
'Java > 디자인패턴' 카테고리의 다른 글
| 디자인 패턴 - 데코레이터 패턴 (0) | 2021.03.16 |
|---|---|
| 디자인 패턴 - 팩토리 패턴 (0) | 2021.03.15 |
| 디자인 패턴 - 옵저버 패턴 (0) | 2021.03.15 |