728x90
정의
- 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀수 있게 해주는 패턴
- 객체들이 할 수 있는 행위를 각각 전략으로 만들어, 동적으로 전략을 바꿔 행위를 수정하는 패턴
- 기존코드의 변경없이 실제 로직 변경을 할 수있는 패턴
- GoF 디자인 패턴의 분류 중 행위패턴에 해당함
사용하는 용도
- 클래스들의 동작이 다른 경우
- 로직 변경이 필요할 때 사용
예시
public interface Skill {
void use();
}
public class Sett {
private Skill skill;
public void useSkill() {
skill.use();
}
public void setSkill(Skill skill) {
this.skill = skill;
}
}
public class Haymaker implements Skill {
@Override
public void use() {
System.out.println("강펀치 !");
}
}
public class Facebreaker implements Skill {
@Override
public void use() {
System.out.println("안면강타 !");
}
}
public class KunckleDown implements Skill {
@Override
public void use() {
System.out.println("주먹다짐 !");
}
}
public class StrategySample {
public static void main(String[] args) {
Sett sett = new Sett();
sett.setSkill(new Haymaker());
sett.useSkill();
sett.setSkill(new Facebreaker());
sett.useSkill();
}
}
특징
- 유지보수가 하기가 편함
- SOLID의 원칙중 OCP(Open-Closed Principle) 위배 되는 상황을 보완해줌
'JAVA' 카테고리의 다른 글
[JAVA] ThreadLocal (0) | 2021.12.03 |
---|---|
[JAVA] 템플릿 메소드 패턴 (0) | 2021.11.29 |
[JAVA] TreeMap (0) | 2021.11.08 |
[JAVA] Junit5 (0) | 2021.10.13 |
[JAVA] DBCP (DB Connection Pool) (0) | 2021.07.18 |