Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 디자인패턴
- 시간더하기
- 생년
- 병합정렬
- 널체크
- ThreeWayPartition
- degien pattern
- java
- 조인
- SSL설정
- 분(minute)
- json
- Flyweight Pattern
- SpringBoot
- jQuery
- 초(second)
- 알고리즘
- boot
- 스트레티지패턴
- list
- 파사드패턴
- 곱 최대값
- 자바
- 매일프로그래밍
- oracle
- 자바스크립트
- JavaScript
- map
- 시(hour)
- spring
Archives
- Today
- Total
만들어가는 세상
[JAVA] 스트레티지 패턴 (strategy pattern) 개념 본문
스트레티지 패턴 개념
여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근점에서 알고리즘이 서로 교환 가능하도록 하는 패턴
- 동일 목적 알고리즘의 선택 적용 문제 예를 들면 불필요한 분기문 처리도 해결 할수 있습니다.
인터페이스
- 가능에 대한 선언(구현과의 분리)
- 여러가지 기능을 사용하기 위한 단일 통로
사용 예 :
- 워드 문서에서 프린터, 폰트 사용
프린터 제조사와 관계없이 프린트 가 가능하다. - 게임 케럭터의 무기(교체 후) 사용
무기 변경 검,도끼,활 변경에 따른 사용이 가능하다.
이제 코드로 확인해봅니다.
일반적으로 쓰이는 객체를 선언하여 메소드를 사용하는 방법입니다.
public class AObj {
public void SomeFunc() {
// 다음 기능을 수행합니다.
System.out.println("AAA");
System.out.println("AAA");
}
}
public class TestPattern {
public static void main(String[] args) {
AObj obj = new AObj();
// A의 기능을 호출
obj.SomeFunc();
}
}
mvc2 패턴과 유사하게 적용된 방법으로 strategy pattern으로 적용해봅니다.
public class TestPattern {
public static void main(String[] args) {
// 테스트
//BInterface binterface = new BImplement();
//binterface.funcA();
AObj obj = new AObj();
// A의 기능을 호출
obj.SomeFunc();
}
}
public class AObj {
BInterface binterface;
public AObj() {
binterface = new BImplement();
}
public void SomeFunc() {
// 다음 기능을 수행합니다.
//System.out.println("AAA");
//System.out.println("AAA");
// 위의 기능이 필요합니다. B님 만들어 주세요.
// 기능 구현을 위임. Delegate
binterface.funcA();
binterface.funcA();
}
}
public interface BInterface {
// 1.기능 선언
void funcA();
}
public class BImplement implements BInterface {
// 2.기능 구현
@Override
public void funcA() {
System.out.println("AAA");
}
}
전자 후자의 코드를 클래스다이어그램을 확인해보겠습니다.
전자
후자
간단하게 스트레티지 패턴에 대해서 알아보았습니다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] 계수 정렬(Counting Sort) 개념 및 알고리즘을 이용한 코딩 (0) | 2020.04.14 |
---|---|
[JAVA] 병합 정렬 개념 및 알고리즘을 이용한 코딩#1 (0) | 2020.04.13 |
[JAVA] 플라이웨이트 패턴(Flyweight Pattern) 개념 (0) | 2020.04.12 |
[JAVA] 파일에서 확장자만 가져오기 (1) | 2020.03.10 |
[JAVA]LIST MAP 객체 JSON 변환 (0) | 2019.11.26 |
Comments