본문 바로가기
디자인 패턴

전략 패턴

by 개발자doc 2024. 5. 8.
목차
1. 전략패턴이란?
2. 장점
1. 전략패턴이란
  • 알고리즘을 캡슐화하고 해당 알고리즘을 사용하는 클라이언트와 분리하는 객체지향 디자인 패턴 중 하나

 

간단하게 말하자면 서로 다르게 동작할 클래스를 나누어 사용하고 필요할 때마다 수정,삭제, 추가할 수 있는 방법이다.

 

 

2. 장점

전략 패턴을 사용하면 알고리즘이나 동작이 변경되어야 할 때 해당 변경을 컨텍스트 클래스에서 분리할 수 있습니다. 전략을 변경하거나 추가함으로써 동작을 유연하게 조정할 수 있다 또한, 코드의 재사용성이 증가하고 유지보수가 용이해질 수 있다.

전략 패턴을 사용한 간단한 예시를 들어보겠다 

ex)

//전략
class StudyDef {
    introduce() { };
}


//구체적인 전략
class EnglishClass extends StudyDef {
    introduce() {
        console.log("영어 수업입니다.")
    }
}
class MathClass extends StudyDef {
    introduce() {
        console.log("수학 수업입니다.")
    };
}

//컨텍스트
class StudyClass {

    constructor() {
        this.study = {}
    }
    addClass(name, classType) {
        this.study[name] = classType

    }
    print(classType) {
        this.study[classType].introduce()
    }
}

const study = new StudyClass();
study.addClass("영어수업", new EnglishClass());
study.addClass("수학수업", new MathClass());

study.print("영어수업");

두가지 수업에 대한 클래스를 만들어 객체에 추가하였고 동적으로 수업에 대한 소개를 출력하게 하였다. 다른 수업에 대한 내용을 추가하려면 클래스를 하나 만들어 객체에 추가면 해주면 객체의 키를 통해 해당 수업에 대한 메서드에 접근할 수 있다.

 

물론 이해를 돕기위한 간단한 예시일 뿐 실제 전략패턴을 사용할 땐 자세하고 여러 요소들을 고려해야할 것이다.

 

참조

https://velog.io/@user4/전략-패턴-Strategy-Pattern-for-JavaScript

 

전략 패턴 (Strategy Pattern) for JavaScript

전략 패턴 (또는 정책 패턴)은 객체 지향 디자인 패턴 중 하나로 동일한 문제를 해결하기 위한 여러 알고리즘(전략)을 정의하고, 각각을 캡슐화하여 상호 교환 가능하도록 만드는 패턴입니다.이

velog.io

 

'디자인 패턴' 카테고리의 다른 글

MVC패턴  (0) 2024.06.20