Java 정책 모드 쉽게 파악
특징:
1. 알고리즘은 자유롭게 전환할 수 있다.
2. 다중 조건 판단을 피한다.
3. 확장성이 좋다.
기업급 개발 및 상용 프레임워크에서의 응용:java.servlet.http.HttpServlet 서비스 방법
예: 두 개의 수에 대한 조작 행위.
public class Demo {
public static void main(String[] args) {
Strategy strategy1 = new StrategyAdd();
Strategy strategy2 = new StrategyDiv();
Context context1 = new Context(strategy1);
context1.execute(10, 5);
context1 = new Context(strategy2);
context1.execute(10, 5);
}
}
interface Strategy{
public void doOperation(int num1,int num2);
}
class StrategyAdd implements Strategy{
public void doOperation(int num1, int num2) {
System.out.println(" ");
System.out.println(num1+"+"+num2+"="+(num1+num2));
}
}
class StrategySub implements Strategy{
public void doOperation(int num1, int num2) {
System.out.println(" ");
System.out.println(num1+"-"+num2+"="+(num1-num2));
}
}
class StrategyMul implements Strategy{
public void doOperation(int num1, int num2) {
System.out.println(" ");
System.out.println(num1+"*"+num2+"="+(num1*num2));
}
}
class StrategyDiv implements Strategy{
public void doOperation(int num1, int num2) {
System.out.println(" ");
System.out.println(num1+"/"+num2+"="+(num1/num2));
}
}
class Context{
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void execute(int num1,int num2){
strategy.doOperation(num1, num2);
}
}
정책 모델이 강조하는 것은 실행할 때 변경하는 것이다. 위의 코드에서 이런 실행할 때 변경이 잘 나타나지 않았다. 우리는 실제 장면을 가정할 수 있다. 즉, 하나의 대상 파라미터가 하나의 방법에 전달될 때 우리는 파라미터에 따라 다른 방법을 선택해야 한다고 가정한다. 이것은 if-else를 고려하여 판단하는 것이고 정책 모델은 이런 if-else를 분류하는 것이다.하나하나가 하나의 클래스를 판단하고 대상이 왔다. 전략 인터페이스 방법을 직접 호출했다. 대상 파라미터가 어떤 구체적인 클래스에 속하는지는 jvm가 판단한다. 우리는 대상 파라미터의 속성 유형을 이해할 필요가 없다. 이렇게 하면 우리의 개발 작업을 간소화할 뿐만 아니라if-else보다 더욱 좋은 확장성을 가진다.이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.