186 words
1 minutes
전략 패턴
전략 패턴(Strategy Pattern)
이 패턴은 팩토리 패턴과 비슷합니다. 캡슐화를 하며, 실행 코드를 서로 공유하는것을 목적으로합니다.
예시
trait Shape {
fn draw(&self);
}
struct Circle;
struct Square;
impl Shape for Circle {
// draw알고리즘
fn draw(&self) {
println!("Drawing Circle");
}
}
impl Shape for Square {
// draw알고리즘
fn draw(&self) {
println!("Drawing Square");
}
}
struct Context {
shape: &'static dyn Shape,
}
impl Context {
fn new(shape: &'static dyn Shape) -> Self {
Self { shape }
}
fn draw(&self) {
self.shape.draw();
}
}
fn main() {
let ctx1 = Context::new(&Circle);
ctx1.draw();
let ctx2 = Context::new(&Square);
ctx2.draw();
}
note
장점
- 알고리즘 변경이 쉬워 유연하게 작업할수 있다.
- 각각의 알고리즘을 쉽게 테스트할수 있어 유연하다.