행동 모드 - 전략 모드
3706 단어 알고리즘
추상 적 인 정책 역할:
package org.strategy;
/**
*
*/
public abstract class AbstractStrategy {
public abstract String calculate(float a,float b);
}
구체 적 인 전략 캐릭터 1:
package org.strategy;
/**
*
*/
public class SubStrategy extends AbstractStrategy{
public String calculate(float a,float b){
float result = a-b;
return " :" + result;
}
}
구체 적 인 전략 캐릭터 2:
package org.strategy;
/**
*
*/
public class AddStrategy extends AbstractStrategy{
public String calculate(float a,float b){
float result = a+b;
return " :" + result;
}
}
구체 적 인 전략 캐릭터 3:
package org.strategy;
/**
*
*/
public class MultStrategy extends AbstractStrategy{
public String calculate(float a,float b){
float result = a*b;
return " :" + result;
}
}
구체 적 인 전략 캐릭터 4:
package org.strategy;
/**
*
*/
public class DivisionStrategy extends AbstractStrategy{
public String calculate(float a,float b){
float result = a/b;
return " :" + result;
}
}
환경 역할:
package org.strategy;
/**
* ,
*/
public class ContextRole {
/**
*
*/
private AbstractStrategy abstactStrategy;
public ContextRole(AbstractStrategy abstactStrategy){
this.abstactStrategy = abstactStrategy;
}
public String calculate(float a,float b) {
String result = abstactStrategy.calculate(a, b);
return result;
}
}
클 라 이언 트:
package org.strategy;
/**
*
*/
public class Test {
public static void main(String[] args){
float a = 200;
float b = 25;
ContextRole contextRole1 = new ContextRole(new AddStrategy());
System.out.println(contextRole1.calculate(a, b));
ContextRole contextRole2 = new ContextRole(new SubStrategy());
System.out.println(contextRole2.calculate(a, b));
ContextRole contextRole3 = new ContextRole(new MultStrategy());
System.out.println(contextRole3.calculate(a, b));
ContextRole contextRole4 = new ContextRole(new DivisionStrategy());
System.out.println(contextRole4.calculate(a, b));
}
}
정책 모드 장점:
1. 알고리즘 이나 행동 을 편리 하 게 동적 으로 바 꿀 수 있 습 니 다.
2. 다 중 조건 전이 문 사용 을 피한다.
정책 모드 단점: 1. 클 라 이언 트 는 모든 전략 류 를 알 고 어떤 전략 류 를 사용 할 지 스스로 결정 해 야 합 니 다.2. 많은 전략 류 를 만든다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.