20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho Nickname 블스 blogstudy@naver.com
20-1. 난이도 있는 패턴 예제 - I 스트레티지 패턴(Strategy Pattern) 알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 조금 말이 어려울 것입니다. 쉽게 말하면, 어떤 객체를 만들 때 객체가 가지는 기능들이 다양하게 존재할 것 입니다. 이러한 기능들을 추상화 하여 언제든지 적용할수 있게 만드는 것 입니다. 즉 기능을 부품화 하는 것 입니다. 예를 들어 포니와 그랜저 자동차가 있습니다. 포니에 들어가는 기어 연결부분과 그랜저에 들어가는 연결부분이 동일하다고(추상화) 하면, 저급기어, 중급기어, 고급기어를 만들어 두고 상황에 따라서 적당한 기어를 적용할수 있을것 입니다. 즉 포니에는 저급기어를, 그랜저에는 고급기어를 적용하는것 입니다. 이렇게 기능을 부품화하여 구조를 만드는 것을 스트레티지라고 생각하시면 됩니다. 개인적으로 실무에서 가장 많이 사용했고. 알아두면 아주 유용하게 사용할 수 있는 패턴 입니다. 노파심에 말씀 드리면, 한번에 모든 것을 알 수는 없습니다. 그리고 안다고 하여도 실제 본인의 개발 소스에 적용하시란 쉽지 않습니다. 꾸준히 살펴보고, 고민해 보는 자세가 중요 합니다. 이번에 살펴 볼 예제는 로봇을 프로그램으로 만들어 보는 것 입니다. 시나리오 로봇 모양은 팔, 다리, 머리, 몸통으로 이루어져 있습니다. 모든 로봇은 기본적으로 걷고, 달릴 수 있어야 합니다. Super로봇은 날수 있고, 미사일을 쏠 수 있으며, 레이저 검을 가지고 있습니다. Standard 로봇은 날수는 없지만 미사일을 쏠 수 있습니다. 그리고 레이저 검은 없지만, 목검은 가지고 있습니다. Low 로봇은 날수도 없고, 미사일을 쏠 수도 없습니다. 그리고 레이저검 또는 목검도 없습니다. 위 3가지 형태의 로봇을 만들어 보도록 하고, 추후 다른 로봇을 만들어야 할 경우를 생각하여 유연한 프로그램을 만들어 보도록 합니다.
20-1. 난이도 있는 패턴 예제 - I (20_1_ex1_patternstrategy)