전략 패턴
Strategy Pattern
(전략 패턴)
행위 패턴(Object Behavioral)
추상화한 전략 객체에게 수행을 위임시키기 때문에
전략 객체를 상속받아 구체화된 객체군은 상호교환이 가능해진다
즉, 요청의 변경없이 객체의 행동들이 통째로 변경된다
상황에 따라 유연하게 대응할 수 있지만, 생성되는 객체의 수가 많아지고
객체군의 성격에 맞게 일반화에 신경써서 구현해야만한다
// 추상화한 전략 객체
public interface Animal {
public String say();
}
...
// 전략 객체를 상속받아 구체화된 객체군
public class Dog implements Animal {
@Override
public String say() { return "왈왈"; }
}
public class Retriever implements Animal {
@Override
public String say() { return "안녕하세요"; }
}
public class Human implements Animal {
@Override
public String say() { return "배고파"; }
}
...
public class ZooCage {
private Animal animal;
public void setAnimal(Animal animal) {
this.animal = animal;
}
public void sound() {
// 요청 수행을 위임
System.out.println(animal.say());
}
}
...
public class Main {
public static void main(String[] args) {
ZooCage zooCage = new ZooCage();
// 요청의 변경없이 객체의 행동들이 통째로 변경 됨
zooCage.setAnimal(new Dog());
zooCage.sound(); // "왈왈"
zooCage.setAnimal(new Retriever());
zooCage.sound(); // "안녕하세요"
zooCage.setAnimal(new Human());
zooCage.sound(); // "배고파"
}
}
댓글남기기