CS/전략패턴
전략패턴
camja
2023. 7. 19. 20:33
전략패턴
: 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로 알고리즘을 캡슐화 하고 서로 교환 가능하도록 만드는 패턴이다.
문제를 해결하는 여러 알고리즘들이 있을 때 이들을 동일한 인터페이스를 사용하여 클라이언트에게 제공하고 실행 시점에 알고리즘을 변경 할 수 있게 한다. 즉 쉽게 말해 여러가지 전략 을 하나의 컨텍스트안에 넣어 사용자가 사용하기 쉽게 선택하거나 교환 해주는 것이다.
//전략 인터페이스
class SoundStrategy {
makeSound();
}
// 강아지가 짖는 소리 전략
class DogSoundStrategy extends SoundStrategy {
makeSound() {
return "멍멍!";
}
}
// 고양이가 울렁거리는 소리 전략
class CatSoundStrategy extends SoundStrategy {
makeSound() {
return "야옹~";
}
}
// 오리가 꽥꽥거리는 소리 전략
class DuckSoundStrategy extends SoundStrategy {
makeSound() {
return "꽥꽥!";
}
}
//컨텍스트
class Animal {
constructor(soundStrategy) {
this.soundStrategy = soundStrategy;
}
makeSound() {
return this.soundStrategy.makeSound();
}
}
// 클라이언트
const dog = new Animal(new DogSoundStrategy());
console.log(dog.makeSound()); // Output: "멍멍!"
const cat = new Animal(new CatSoundStrategy());
console.log(cat.makeSound()); // Output: "야옹~"
const duck = new Animal(new DuckSoundStrategy());
console.log(duck.makeSound()); // Output: "꽥꽥!"