* 스트래티지 패턴(Strategy Pattern) - 알고리즘군을 정의하고 각각을 캡슐화하여 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다.
>알고리즘군은 어떤 일을 해야 하는지를 정의해 놓은 것. 즉, 연관성 있는 기능들을 모아놓은 그룹을 말함
>각각의 알고리즘즘을 캡슐화를 시킨다. 캡슐화 한다는 것은 클래스로 만들어서 관리한다는 것
>그리고 그 알고리즘을 그룹들 내에서 서로 바꿀 수 있게 한다는 의미
* 디자인 원칙
- 달라지는 부분을 찾아내고 달라지지 않은 부분으로 부터 분리시켜 캡슐화 한다.
- 상속보다 구성을 활용한다("A는 B이다" 보다는 "A에는 B가 있다"가 나을 수 있음)
- 구성을 이용하여 시스템을 만들면 유연성을 크게 향상시킬 수 있다.
- 알고리즘군을 별도의 클래스의 집합으로 캡슐화할 수 있도록 만들어 줄 뿐만 아니라, 실행시 행동을 바꿀 수 있게 된다.
즉,
- 메소드를 계속 만들어 행동을 구현할 수 있다.
- 메소드로 구현하기 보다는 각 행동에 대해서 인터페이스로 표현하고 인터페이스로 구현하는 편이 여러가지 유연성을 제공할 수 있게 된다
- 스트래티지 패턴에서 가장 중요한 것은 실행도중 행동을 바꿀 수 있다는 점이다.
- 이런 장점 때문에 경우에 따라서 상속보다 구성을 활용하는 것이다.
[JAVA] 상속(Inheritance)과 구성(Composition) (0) | 2020.05.13 |
---|---|
[JAVA] 지역변수와 인스턴스 변수 차이 (0) | 2020.05.13 |
[JAVA] 절차지향 언어와 객체 지향 언어의 차이 (0) | 2020.05.13 |
[JAVA] 라이브러리와 JAR파일 이란? (0) | 2020.05.13 |
[JAVA] JAVA관련 상식 CGI와 서블릿 그리고 톰캣 (0) | 2020.05.13 |