디자인패턴: 전략패턴

kimjungmin0426·2019년 11월 11일
1

참고: 최범균님의 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴

디자인 패턴이란?
디자인 패턴이란 객체지향적 설계를 하면서 자주 나오는 설계기법(클래스, 객체의 구성, 객체 간 메시지 흐름)을 정리해서 모아놓은 것.

전략 패턴이란?
전략 패턴: RunTime동안 알맞는 알고리즘을 다이내믹하게 선택해서 사용하는 것. (여기서 말하는 알고리즘은 코딩테스트할 때 나오는 알고리즘이 아니라 객체의 행위라 보면 좋겠다.)

아래 예시를 보면서 이해하자!

위에 예시처럼 코드를 짠다면 변경과 확장에 취약한 코드가 된다. 새로운 relationStatus가 생길 때 마다 if-문이 늘어난다. 즉 확장이 일어날 때마다 기존의 코드를 바꾸어야 한다. 이러한 코드는 매번 바뀌는 상황에 대처를 못하는 코드이다. 또한, if-문이 계속 늘어난다면 가독성이 떨어지는 코드가 완성된다. 이제 전략패턴을 적용한 코드를 보자.

위에서 전략패턴이란 런타임 시간에 알맞는 알고리즘을 선정하는 방식이라 했다. 위에서는 relationStatus가 어떻게 들어오는지에 따라 CaluclatStrategy를 선정하기 때문에 전략패턴에 들어맞는다.

만약, relationStatus가 "friend", "granddad"와 같이 확장된다고 한다면 새로운 CalculatStrategy만 추가하고 List에 추가만 해주면 된다. 확장이 용이하게 된다.

profile
장인정신을 갖는 개발자고 성장하고 싶습니다.

0개의 댓글