자바 개발 의 디자인 모델 - 전략 모델 (Strategy Pattern)
유 비 는 강동 에 가서 아 내 를 얻 으 려 고 한다. 떠 나 기 전에 제갈량 은 조 운 (들러리) 에 게 세 가지 묘책 을 주 었 다. 천기 에 따라 어 려 운 문 제 를 해결 하 겠 다 고 말 했다. 헤 이, 말 하지 마라. 정말 큰 문 제 를 해결 했다. 결국 주유 가 부인 을 모시 고 또 군 대 를 꺾 었 다. 그러면 우리 가 먼저 이 상황 이 어떤 지 보 자.
먼저 이 장면 의 요 소 를 말한다. 세 가지 묘책, 하 나 는 금 낭, 하 나 는 조 운 이다. 묘 계 는 샤 오 량 동지 가 준 것 이다. 묘 계 는 금 낭 에 두 는 것 이다. 흔히 금 낭 묘책 이 라 고 부 르 잖 아. 그러면 조 운 은 일 하 는 사람 이 금 낭 에서 묘 계 를 꺼 내 집행 한 다음 에 이 기 는 것 이다.
아 날로 그 그래프
자바 프로그램
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. * , * */
public interface IStrategy {
//
public void operate();
}
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. * , */
public class BackBoor implements IStrategy {
public void operate() {
System.out.println(" , ");
}
}
2.
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. * */
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println(" , !");
}
}
3.
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. * , */
public class BlockEnemy implements IStrategy {
public void operate() {
System.out.println(" , ");
}
}
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. * , */
public class Context {
// ,
private IStrategy strategy;
public Context(IStrategy strategy){
this.strategy = strategy;
}
// ,
public void operate(){
this.strategy.operate();
}
}
그 다음 에 조 운 웅 은 씩씩 하 게 세 개의 금 주머니 를 들 고 노년 대열 에 들 어간, 아직도 순정 소녀 와 결혼 하고 싶 은, 색정 에 빠 진 유 할 아버 지 를 데 리 고 가 려 고 한다. 하 이, 아직 말 하지 마라, 샤 오 량 의 세 가지 묘책 은 정말 괜찮다. 봐 봐:
package com.zanelove.strategy;
/** * I'm glad to share my knowledge with you all. */
public class ZhaoYun {
/** * , , */
public static void main(String[] args) {
Context context;
// ,
context = new Context(new BackDoor()); //
context.operate(); //
// ,
context = new Context(new GivenGreenLight());
context.operate(); //
// , ?
context = new Context(new BlockEnemy());
context.operate(); //
}
}
정책 모드 장점:
알고리즘 의 사용 과 알고리즘 자체 의 결합 을 해제 하면 변화의 구체 적 인 알고리즘 을 봉인 할 수 있다.전략 모델 은 계승 을 제외 한 탄력 적 인 대체 방안 입 니 다. 만약 에 계승 을 사용 하여 하나의 종 류 를 정의 하면 다음 부분의 파생 류 가 있 습 니 다. 이때 기 류 를 갇 힐 것 입 니 다. 이 를 수정 하 는 것 은 매우 쉽 지 않 고 전략 모델 은 서로 다른 대상 을 조합 하여 행 위 를 바 꿀 수 있 습 니 다.
정책 모드 단점:
1. 고객 코드 는 각 전략 이 어떻게 실현 되 는 지 에 관심 을 가 질 필요 가 없 지만 몇 가지 전략 이 실현 되 고 구체 적 인 기능 상황 이 있 는 지 알 아야 필요 에 따라 어떤 전략 을 사용 할 수 있 습 니 다.2. 전략 모드 를 사용 한 후 작은 종류 가 많이 나타 납 니 다.
이 세 가지 방법 으로 주 랑 은 "부인 을 모시 고 또 군 대 를 꺾 었 다" 는 것 이 야!이것 이 바로 전략 모델 이 고 내부 집적 저 결합 의 특징 도 나 타 났 습 니 다. 또 하 나 는 확장 성 입 니 다. 즉, OCP 원칙 입 니 다. 전략 류 는 계속 증가 할 수 있 습 니 다. Context. 자바 만 수정 하면 됩 니 다. 이것 은 더 이상 말 하지 않 고 스스로 이해 하 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.