11. 전략 전략 모델
4657 단어 디자인 모드
전략 모드 는 알고리즘 에 대한 패 키 징 으로 일련의 알고리즘 을 대응 하 는 클래스 에 각각 패 키 징 하고 이런 종 류 는 같은 인 터 페 이 스 를 실현 하여 서로 교체 할 수 있 습 니 다.
정책 모드 와 템 플 릿 모드
앞에서 말 한 행위 유형 모델 에서 하나의 모델 도 알고리즘 에 대한 패 키 징 - 모드 방법 모델 에 관심 을 가진다. 전략 모델 과 모드 방법 모델 의 차 이 는 하나의 단독 패 키 징 류 Context 일 뿐이다. 이 는 모드 방법 모델 과 의 차이 점 은 모드 방법 모델 에서 알고리즘 을 호출 하 는 주 체 는 추상 적 인 부모 유형 에 있 고 전략 모델 에서호출 알고리즘 의 주 체 는 패 키 징 류 Context 에 포 장 된 것 입 니 다. 추상 적 인 전략 Strategy 는 보통 인터페이스 이 고 목적 은 규범 을 정의 하기 위 한 것 이 며 그 안에 논 리 를 포함 하지 않 습 니 다.사실은 이것 은 유 니 버 설 실현 일 뿐 실제 프로 그래 밍 에서 각 구체 적 인 전략 실현 유형 간 에 똑 같은 논리 가 존재 하 는 것 을 피하 기 어렵다. 중복 되 는 코드 를 피하 기 위해 우 리 는 추상 류 를 사용 하여 Strategy 의 역할 을 하고 그 안에 공공 코드 를 밀봉 하기 때문이다. 그래서 많은 응용 장면 에서전략 모드 에서 일반적으로 모드 방법 모드 의 그림 자 를 볼 수 있 습 니 다.
템 플 릿 방법 은 더욱 강조 한다. 1) 하나의 선 (알고리즘 절차) 을 정의 하고 온라인 의 여러 점 은 변화 할 수 있다 (구체 적 으로 하위 클래스 에서 완성). 온라인 의 여러 점 은 반드시 실 행 될 것 이 고 특정한 절차 에 따라 실 행 될 것 이다.2) 알고리즘 프로 세 스 는 유일한 입구 만 있 고 점 에 대한 접근 은 제한 을 받는다 [일반적으로 보 호 된 가상 함수 로 가 변 점 을 정의 한다].
전략 모델 은 '전략' 은 하나의 전체적인 (완전한) 알고리즘 이 고 알고리즘 은 전체적으로 교 체 될 수 있다.한편, 템 플 릿 방법 은 그 중의 특정한 점 만 바 꿀 수 있 고 알고리즘 절 차 는 고정 적 으로 변 하지 않 습 니 다.
코드 예제
1. interface IStrategy {
2. public void doSomething();
3. }
4. class ConcreteStrategy1 implements IStrategy {
5. public void doSomething() {
6. System.out.println(" 1");
7. }
8. }
9. class ConcreteStrategy2 implements IStrategy {
10. public void doSomething() {
11. System.out.println(" 2");
12. }
13. }
14. class Context {
15. private IStrategy strategy;
16.
17. public Context(IStrategy strategy){
18. this.strategy = strategy;
19. }
20.
21. public void execute(){
22. strategy.doSomething();
23. }
24. }
25.
26. public class Client {
27. public static void main(String[] args){
28. Context context;
29. System.out.println("----- 1-----");
30. context = new Context(new ConcreteStrategy1());
31. context.execute();
32.
33. System.out.println("----- 2-----");
34. context = new Context(new ConcreteStrategy2());
35. context.execute();
36. }
37. }
전략 모드 구조
4. 567917. 패 키 징 류: 문맥 이 라 고도 부 르 고 전략 에 대해 2 차 패 키 징 을 하 는데 목적 은 고 층 모듈 이 전략 에 대한 직접적인 호출 을 피 하 는 것 이다
4. 567917. 추상 적 인 전략: 일반적인 상황 에서 하나의 인터페이스 로 각 실현 유형 에 중복 되 는 논리 가 존재 할 때 추상 적 인 유형 으로 이 부분의 공공 코드 를 밀봉 한다. 이때 전략 모델 은 모델 방법 모델 처럼 보인다
4. 567917. 구체 적 인 전략: 구체 적 인 전략 역할 은 보통 한 그룹 이 알고리즘 을 밀봉 한 유형 으로 맡 는데 이런 유형 들 은 수요 에 따라 자 유 롭 게 교체 할 수 있다
전략 모드 장단 점
4. 567917. 전략 류 간 에 자 유 롭 게 전환 할 수 있다. 전략 류 는 같은 추상 을 실현 하기 때문에 그들 사이 에 자 유 롭 게 전환 할 수 있다
4. 567917. 확장 하기 쉽 고 새로운 전략 을 추가 하 는 것 은 전략 모델 에 있어 매우 쉬 우 며 대체적으로 기 존의 코드 를 바 꾸 지 않 는 토대 에서 확장 할 수 있다
4. 567917. 다 중 조건 을 사용 하지 않 습 니 다. 전략 모델 을 사용 하지 않 으 면 모든 알고리즘 에 대해 조건 문 구 를 사용 하여 연결 해 야 합 니 다. 조건 판단 을 통 해 어떤 알고리즘 을 사용 할 지 결정 하고 다 중 조건 으로 판단 하 는 것 은 유지 하기 가 매우 쉽 지 않 습 니 다
전략 모델 의 단점 은 주로 두 가지 가 있다.
4. 567917. 각 전략 류 를 유지 하 는 것 은 개발 에 추가 비용 을 가 져 다 줄 수 있 습 니 다. 여러분 들 은 이 분야 에서 경험 이 있 을 수 있 습 니 다. 일반적으로 전략 류 의 수량 이 5 개 를 넘 으 면 골 치 아 픕 니 다
4. 567917. 클 라 이언 트 (호출 자) 에 대해 모든 전략 류 를 노출 해 야 합 니 다. 어떤 전략 을 사용 하 는 지 클 라 이언 트 가 결정 하기 때문에 클 라 이언 트 는 어떤 전략 이 있 는 지 알 고 각종 전략 간 의 차 이 를 알 아야 합 니 다. 그렇지 않 으 면 결과 가 심각 합 니 다.예 를 들 어 정렬 알고리즘 의 전략 모델 이 있 는데 빠 른 정렬, 거품 정렬, 정렬 선택 등 세 가지 알고리즘 을 제공 합 니 다. 클 라 이언 트 가 이런 알고리즘 을 사용 하기 전에 이 세 가지 알고리즘 의 적용 상황 을 먼저 알 아야 합 니까?예 를 들 어 클 라 이언 트 는 용 기 를 사용 해 야 한다. 링크 가 실 현 된 것 도 있 고 배열 이 실 현 된 것 도 있다. 클 라 이언 트 도 링크 와 배열 이 어떤 차이 가 있 는 지 알 아야 하지 않 겠 는가?그런 점 에서 디 미트 의 법칙 에 어 긋 난다.
전략 모드 사용 필드
대상 을 대상 으로 디자인 한 것 은 전략 모델 에 대해 잘 알 고 있 을 것 이다. 실질 적 으로 대상 을 대상 으로 하 는 계승 과 다 형 이기 때문에 전략 모델 의 유 니 버 설 코드 를 본 후에 적어도 다음 과 같은 두 가지 상황 에서 전략 모델 을 사용 하 는 것 을 고려 할 수 있다.
4. 567917. 몇 가지 유형의 주요 논 리 는 같 고 일부 논리의 알고리즘 과 행위 에 있어 서 만 약간 차이 가 있 는 상황 이다
4. 567917. 몇 가지 비슷 한 행위 가 있 거나 알고리즘 이 있 습 니 다. 클 라 이언 트 는 어떤 것 을 사용 할 지 동태 적 으로 결정 해 야 합 니 다. 그러면 전략 모델 을 사용 하여 이 알고리즘 을 클 라 이언 트 가 호출 할 수 있 도록 밀봉 할 수 있 습 니 다
전략 모델 은 간단 하고 자주 사용 하 는 모델 로 우리 가 개발 을 할 때 의도 적 으로 사용 하 는 경우 가 많다. 일반적으로 전략 모델 은 단독으로 사용 하지 않 고 모델 방법 모델, 공장 모델 등 과 혼합 하여 사용 하 는 경우 가 비교적 많다.
정책 모드 와 프 록 시 모드 의 차이
간단 한 프 록 시 모드 와 전략 모드 가 기능 적 으로 큰 차이 점 은: 간단 한 대리 모델 에서 대리 류 는 피 대리 류 의 행 위 를 알 고 있다. 대리 류 와 피 대리 류 가 같은 인 터 페 이 스 를 실현 하기 때문에 대리 류 와 피 대리 류 의 구 조 는 같다. 한편, 전략 모델 에서 전략 용 기 는 내부 전략의 상세 한 정 보 를 모른다. 용기 가 내부 전략 과 같은 인 터 페 이 스 를 실현 하지 못 했 기 때문이다. 즉, 용기 와 내부 전략 은 간단 한 조합 관계 일 뿐 용 기 는 내부 전략의 행 위 를 추출 하여 통일 적 으로 실현 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.