전략 패턴이란
전략 패턴은 행동 디자인 패턴입니다. 모든 프로그램의 목적은 문제를 해결하는 것입니다. 문제를 해결하기 위해서는 특정 알고리즘을 작성해야 하며 전략 모드는 알고리즘을 전체적으로 대체할 수 있습니다.
예:
기능적 인터페이스 및 람다 식과 같은 Java 전략 패턴의 예도 있습니다.
예: 문자열 대소문자 변환
StringPrintStragegy 전략 인터페이스
package BehavioralPattern.StrategyMode;
/**
* 字符串打印策略
*/
public interface StringPrintStragegy {
/**
* 字符串转换
*/
String changeString(String s);
}
ToLowerCaseStragegy 문자열을 소문자로 전략
package BehavioralPattern.StrategyMode;
/**
* 字符串转小写
*/
public class ToLowerCaseStragegy implements StringPrintStragegy{
@Override
public String changeString(String s) {
return s.toLowerCase();
}
}
ToUpperCaseStragegy 문자열을 대문자로 전략
package BehavioralPattern.StrategyMode;
/**
* 字符串转大写
*/
public class ToUpperCaseStragegy implements StringPrintStragegy{
@Override
public String changeString(String s) {
return s.toUpperCase();
}
}
StringChangeTool 문자열 변환 도구(전략 사용)
package BehavioralPattern.StrategyMode;
/**
* 字符串转换工具
*/
public class StringChangeTool {
private StringPrintStragegy stragegy;
public StringChangeTool(StringPrintStragegy stragegy) {
this.stragegy = stragegy;
}
public String change(String s){
return stragegy.changeString(s);
}
}
기본
package BehavioralPattern.StrategyMode;
/**
* Main
*/
public class Main {
public static void main(String[] args) {
String s = "HelLo WoRld";
//使用策略
StringChangeTool lowerTool = new StringChangeTool(new ToLowerCaseStragegy());
StringChangeTool upperTool = new StringChangeTool(new ToUpperCaseStragegy());
System.out.println(lowerTool.change(s));
System.out.println(upperTool.change(s));
}
}
결과
요약하다
전략 패턴의 핵심 아이디어는 계산 방법에서 변경하기 쉬운 알고리즘을 추출하여 "전략" 매개변수로 전달하여 새로운 전략이 원래 논리를 수정할 필요가 없도록 하는 것입니다. 전략 패턴은 또한 코드에서 if-else를 대체하는 좋은 방법입니다.
템플릿 방법 모드와 다름:
템플릿 방법 모드 --------- 전체 프로세스
전략 모드 --------- 프로세스의 특정 알고리즘