컴퓨터 공학

객체지향개발론_3장.전략패턴

혼새미로 2015. 11. 27. 02:18
반응형

3. 전략 패턴

전략 패턴 : 알고리즘의 군을 정의하고 캡슐화해주며, 서로 언제든지 바꿀 수 있도록 해줌.

) --> 

디자인패턴 : 코드 설계는 예술적 요소가 있으며, 충분한 경험 없이는 효과적인 코드를 만들기 쉽지 않음. 하지만 경험많은 개발자가 유사한 문제에 대해 이미 만든 해결책이 있으며, 설계 패턴은 이와 같은 해결책을 말함

) --> 

패턴의 종류

생성: 객체의 생성과 관련(생성하는 객체의 구체적인 클래스와 이들의 생성방법을 숨김)

행위 : 객체와 객체의 상호작용 관련 (보통 상속보다는 포함관계 사용)

구조 : 객체간의 정적인 구조적 관계와 관련됨

) --> 

패턴을 사용하는 이유

유연성 : 코드의 유연성 확보(객체간의 올바른 추상화 제공, 객체간의 낮은 결합성 제공)

재사용성 : 코드의 재사용 가능성을 높여줌

개발자간 의사소통 강화

) --> 

is-a보다 has-a가 더 좋음

) --> 

전략패턴 : 알고리즘의 군을 정의하고 캡슐화해주며, 서로 언제든지 바꿀 수 있도록 해줌. 객체의 상태에 따라 행위를 동적으로 바꿀 수 있도록 해줌.(당연한 것이지만 조건문을 사용하지 않음)

) --> 

등장 클래스

strategy 인터페이스 : 전략을 이용하기 위한 인터페이스 제공

concrete strategy 클래스 : 다수가 제공되며, 구체적인 전략이 구현되어 있는 클래스

Client 클래스 : Context 클래스라고도 하며, 전략을 실제사용하는 클래스

) --> 

전략 패턴 사용 시기

관련 있는 클래스들의 행위만 다를 경우

한 알고리즘의 다양한 변형이 필요한 경우

알고리즘 클라이언트는 몰라야 하는데 데이터를 사용할 경우

한 클래스가 여러 행위 조건문을 통해 정의할 경우

전략 패턴 관계도


 

장점 : 위임이라는 느슨한 연결을 통해 전략을 쉽게 바꿀 수 있으며, 실행중에도 변경 가능함.

단점 : 행위의 모델링이 쉽지 않을 수 있음

) --> 

반응형