전략은 설계 패턴의 객체 행동 패턴입니다. 주로 일련의 알고리즘을 정의하고 이러한 알고리즘을 별도의 클래스로 캡슐화합니다.
Stratrgy는 널리 사용됩니다. 예를 들어, 회사의 비즈니스 변경 차트를 구현하는 두 가지 방법이 있습니다. .
여기서 우리는 문자열 대체를 예로 들어 읽어야 할 파일이 있습니다. 사용자의 요구 사항에 따라 변수를 교체하는 여러 가지 방법이있을 수 있으므로 여러 가지 변수 문자 대안 세트를 준비해야합니다.
먼저, 우리는 몇 가지 일반적인 변수와 방법을 정의하기 위해 추상 클래스 파충류를 만듭니다.
코드 사본은 다음과 같습니다.
공개 초록 클래스 reptemprule {
보호 된 String OldString = "";
public void setoldstring (String OldString) {
this.oldstring = Oldstring;
}
보호 된 문자열 Newstring = "";
공개 문자열 getNewString () {
뉴스 스트링 리턴;
}
공개 초록 void void Replace ()는 예외를 던집니다.
}
Reptemprule에는 명확하게 상속되어야하는 추상적 인 방법 요약이 있으며,이 대체는 실제로 그것을 대체하는 특정 방법입니다.
이제 두 가지 대안이 있습니다.
1. 텍스트의 AAA를 BBB로 바꾸십시오.
2. 텍스트의 AAA를 CCC로 교체하십시오.
해당 클래스는 reptempruleone 및 reptempruletwo입니다.
코드 사본은 다음과 같습니다.
공개 클래스 reptempruleone 확장 reptemprule {
public void Replace ()는 예외 {
// 교체 First는 JDK1.4의 새로운 기능입니다. Newstring = Oldstring.replaceFirst ( "AAA", "BBBB")
System.out.println ( "이것은 하나입니다");
}
}
코드 사본은 다음과 같습니다.
공개 클래스 reptempruletwo 확장 reptemprule {
public void Replace ()는 예외 {
Newstring = Oldstring.replaceFirst ( "AAA", "CCC")
System.out.println ( "이것은 2 개를 대체합니다");
}
}
2 단계 : 클라이언트에게 자유롭게 알고리즘을 선택할 수있는 기능을 제공하기 위해 알고리즘 솔루션 클래스를 설정해야합니다.
코드 사본은 다음과 같습니다.
공개 클래스 reptemprulesolve {
개인 파충류 전략;
공개 reptemprulesolve (Reptemprule Rule) {
this.strategy = 규칙;
}
공개 문자열 getNewContext (사이트 사이트, String OldString) {
반환 전략.
}
공개 void changealgorithm (Reptemprule newalgorithm) {
전략 = Newalgorithm;
}
}
통화는 다음과 같습니다.
코드 사본은 다음과 같습니다.
공개 수업 테스트 {
......
public void testreplace () {
// 첫 번째 대안 세트를 사용하여 Solver = New ReptemPrulesolve (New ReptemPrulesimple ());
solver.getNewContext (사이트, 컨텍스트);
// Solvers의 두 번째 세트 = New ReptemPrulesolve (New ReptemPruletwo ());
solver.getNewContext (사이트, 컨텍스트);
}
..... .....
}
작동 중에 알고리즘을 자유롭게 전환하는 목표를 달성했습니다.
실제로 전체 전략의 핵심 부분은 전략 모드를 사용하는 것이 사용자가 변경해야 할 때 수정 수를 매우 작게 만들 수 있습니다.
전략과 공장은 비교적 간단하고 이해하기 쉽고 런타임에 자유롭게 전환 할 수 있습니다. 공장은 물체를 만드는 데 중점을 둡니다.
전략은 다음과 같은 경우에 적합합니다.
1. 파일을 다른 형식으로 저장합니다.
2. 알고리즘이 다른 파일을 압축합니다.
3. 다른 알고리즘으로 이미지를 가로 채십시오.
4. 곡선이나 블록 다이어그램 막대와 같은 다른 형식의 동일한 데이터의 출력 그래프.