디자인 패턴

JWJ·2024년 5월 6일

면접 준비

목록 보기
1/4
post-thumbnail

개요

디자인 패턴이란 객체지향 프로그래밍에서 클린 코드를 작성하기 위한 가이드 라고 생각한다. SW 개발하면서 여러 문제들을 해결하는 예제들을 제공한다. 이는 생성, 구조, 행위 패턴으로 구성되어 있으며 코드와 함께 알아보도록 하자.

생성 패턴

구조 패턴

행위 패턴

1. 전략 패턴

전략 패턴은 동일한 프로세스를 실행할 수 있는 알고리즘이 여러개 일때, 이들을 동적으로 선택하는 것을 의미한다.

BatchProcessor 를 실행할 때 어떠한 리스트를 선택해야 할지 결정해야 한다. ArrayList LinkedList 등 여러 전략이 있다면, BatchProcessor생성하는 시점에 필요한 전략을 주입하면 된다.

class BatchProcessor{
	//MyList는 인터페이스
	private final MyList<Integer> list; 
    //생성 시점에 전략을 결정하는 것 = 전략 패턴
    public BatchProcessor (MyList<Integer> list) {
    	this.list = list;
    }
    
    void logic(){
    	//list를 활용하여 비지니스 로직 수행
    }
}

main() {
	//1. ArrayList 쓰는 전략을 사용할꺼야
    MyArrayList<Integer> list = new MyArrayList<>();
    BatchProcessor processor = new BatchProcessor(list);
    
    //2. LinkedList 쓰는 전략을 사용할꺼야
    MyLinkedList<Integer> list = new MyLinkedList<>();
    BatchProcessor processor = new BatchProcessor(list);
}
  • 어떠한 전략을 사용할 것인지를 이후 런타임 시점으로 미루었기 때문에 BatchProcessor 의 재사용성이 높아졌다.
  • 만약 BatchProcessorMyList 인터페이스가 아닌 ArrayList 등의 구체적인 클래스에 의존했다면 LinkedList 를 사용하는 BatchProcessor 를 따로 생성해야만 할 것이다.

    정리하면 전략 패턴은 런타임 시점에 필요한 전략을 주입받아 재사용성을 높이는 패턴이라고 할 수 있다.

profile
인사이트를 얻고 정리하는 공간입니다

0개의 댓글