본문 바로가기
TIL

strategy template 패턴

by 은지:) 2024. 4. 11.
728x90
반응형

 

스트래티지 패턴(Strategy Pattern)

 

객체지향 디자인 패턴

 

알고리즘군을 정의하고 각각을 캡슐화하여 교환할 수 있도록 만드는 패턴

 

클라이언트는 알고리즘을 독립적으로 선택, 알고리즘의 변경에도 영향을 최소화

 

// 오름차순 정렬 함수
const ascending = (a, b) => a - b;

// 내림차순 정렬 함수
const descending = (a, b) => b - a;

// 정렬 함수를 인자로 받아 배열을 정렬하는 함수
const sortArray = (arr, compareFn) => arr.slice().sort(compareFn);

// 예시 배열
const numbers = [5, 2, 8, 3, 1];

// 오름차순 정렬
const sortedAscending = sortArray(numbers, ascending);
console.log('Ascending:', sortedAscending); // 출력: [1, 2, 3, 5, 8]

// 내림차순 정렬
const sortedDescending = sortArray(numbers, descending);
console.log('Descending:', sortedDescending); // 출력: [8, 5, 3, 2, 1]

 

 

 

알고리즘을 독립적으로 관리할 수 있습니다. 각각의 알고리즘을 캡슐화하여 변경이 쉽습니다.
클라이언트 코드가 구체적인 알고리즘에 의존하지 않습니다. 즉, 알고리즘이 변경되어도 클라이언트 코드를 수정할 필요가 없습니다.
코드의 재사용성이 높아집니다. 새로운 알고리즘을 추가하거나 기존의 알고리즘을 교체하는 것이 간단합니다.
스트래티지 패턴의 단점은 다음과 같습니다.

각각의 알고리즘을 별도의 클래스로 캡슐화해야 하므로 클래스의 개수가 많아질 수 있습니다. 이는 코드의 복잡성을 증가시킬 수 있습니다.
새로운 알고리즘을 추가할 때 기존의 인터페이스를 수정해야 할 수 있습니다. 이는 코드 변경을 동반하므로 주의가 필요합니다.




템플 패턴(template Pattern)

 

코드 재사용성을 높이기 위해 사용되는 일반적인 기술

템플릿은 미리 정의된 형식으로 작성된 코드 조각을 재사용하여 유사한 작업을 반복하는 데 유용

 

// 템플릿 함수
const greetingTemplate = (name) => {
  return `Hello, ${name}!`;
};

// 템플릿 함수를 사용하여 메시지 생성
const greet = (name) => {
  const message = greetingTemplate(name);
  console.log(message);
};

// 예시 사용
greet('Alice'); // 출력: Hello, Alice!
greet('Bob'); // 출력: Hello, Bob!

 

장점:

  1. 재사용성: 템플릿 함수를 사용하여 코드를 재사용할 수 있으므로, 유사한 작업을 반복하는 데 유용합니다.
  2. 추상화: 템플릿 함수를 사용하여 코드의 의도를 더 명확하게 표현할 수 있습니다.
  3. 유연성: 함수를 값으로 다루는 함수형 프로그래밍의 특성을 활용하여 템플릿을 동적으로 생성하거나 변형할 수 있습니다.

단점:

  1. 지연 평가 (Lazy Evaluation): 템플릿 함수를 사용하여 코드를 작성할 때 일부 함수형 프로그래밍 언어에서는 지연 평가가 발생할 수 있습니다. 이는 성능에 영향을 줄 수 있습니다.
  2. 복잡성: 템플릿 함수를 너무 많이 사용하거나 복잡하게 만들면 코드의 가독성이 떨어질 수 있습니다. 따라서 적절한 수준에서 템플릿을 활용하는 것이 중요합니다.

 

  1. UI 생성: 웹 애플리케이션에서 동적으로 UI를 생성할 때 템플릿 함수를 사용할 수 있습니다. 예를 들어, 사용자의 입력이나 데이터베이스에서 가져온 정보에 따라 다양한 형태의 UI를 생성할 수 있습니다.
  2. 이메일 템플릿: 이메일 서비스에서는 다양한 종류의 이메일을 생성해야 할 때 템플릿 함수를 사용합니다. 예를 들어, 회원 가입 환영 이메일, 비밀번호 재설정 안내 이메일 등을 템플릿 함수를 통해 생성할 수 있습니다.
  3. 문서 생성: 문서 작성 라이브러리나 PDF 생성 라이브러리에서도 템플릿 함수를 사용하여 문서의 일부를 동적으로 생성하는 데 활용됩니다. 예를 들어, 사용자의 입력이나 데이터베이스에서 가져온 정보를 문서에 삽입할 수 있습니다.
  4. 문자열 조합: 텍스트 처리나 문자열 조합 작업에서도 템플릿 함수를 사용할 수 있습니다. 예를 들어, 특정 형식의 문자열을 동적으로 생성하거나 변수를 문자열에 삽입할 때 활용됩니다.
  5. 코드 생성: 코드 생성 도구에서도 템플릿 함수를 사용하여 코드의 일부를 동적으로 생성하는 데 활용됩니다. 예를 들어, 코드 제너레이터를 사용하여 특정 프로그래밍 언어의 코드를 생성할 때 템플릿 함수를 사용할 수 있습니다.
728x90
반응형

'TIL' 카테고리의 다른 글

기초1  (0) 2024.04.11
리액트 지역 상태 전역 상태  (0) 2024.04.11
useState 와 useReducer  (0) 2024.04.08
Iterator 패턴  (0) 2024.03.19
자바스크립트 접근 제한자  (0) 2024.03.09

댓글