개발자 기술면접 꼬리물기 질문
  • Welcome
  • 01 Java
    • 01-01. Generic
    • Garbage Collection
    • 자료형과 객체 비교
    • 힙(Heap)과 메모리(Memory)
    • JDK 버전과 JRE
    • 스레드(Thread)
    • 예외(Throwable)
    • Call By Value와 Call By Reference
    • String, equals, StringBuffer
    • Thread와 비동기
  • 02 Spring
    • 02-01. Spring 동작 방식
    • @Autowired, @RequiredArgsConstructor
    • 인증(Authentication)과 인가(Authorization)
    • 트랜잭션(Transaction)
    • QueryDSL과 SQL Injection
    • SecurityContextHolder
    • @EqualsAndHashCode
  • 알고리즘과 자료구조
    • Set 자료구조
    • 정렬 알고리즘
    • 우선순위 큐 (Priority Queue)
    • DFS와 BFS
    • 힙(Heap) 자료구조
    • 스택(Stack)과 큐(Queue)
    • 암호화 알고리즘
    • LinkedList
    • 자료구조 - 해시 테이블(HashTable)
    • 자료구조 - ConcurrentHashMap
  • 데이터베이스
    • 기본
    • 인덱스 (Index)
    • 정규화 (Normalization)
    • 파티셔닝과 샤딩(Partitioning & Sharding)
    • 트랜잭션(Transaction)과 락(Lock)
    • 덤프(Dump)
    • Redis
    • 격리 수준(MySQL)
  • 네트워크
    • 전송 계층 (Transport Layer)
    • 네트워크 계층 (Network Layer)
    • Http와 Https
    • IP(Internet Protocol)
    • 프록시 서버
    • Http Protocol
    • 소켓(Socket)
    • 로드 밸런싱(Load Balancing)
  • 디자인 패턴
    • 전략 패턴 (Strategy Pattern)
    • 싱글톤 패턴 (Singleton Pattern)
    • 템플릿 메서드 패턴과 전략 패턴
    • 데코레이터 패턴 (Decorator pattern)
  • 웹
    • CORS 정책
    • 동시성 제어
    • N+1 문제
    • 웹 브라우저 동작원리
    • URI, URL, URN
    • 채팅 아키텍처 설계
  • 개발자
    • 개발 방법론 TDD
  • 운영체제
    • JIT & AOT 컴파일
    • 컨텍스트 스위칭(Context Switching)
    • 프로세스와 스레드
    • 싱글 스레드와 멀티 스레드
  • 코딩테스트
    • Stack / Queue (스택 / 큐)
    • Heap(우선 순위 큐)
    • DP(동적 계획법)
    • DFS(깊이 우선 탐색)
    • BFS(너비 우선 탐색)
    • Greedy(그리디 알고리즘)
    • 해시(Hash)
    • 투 포인터 알고리즘
    • Shortest path
    • 수학적 사고
Powered by GitBook
On this page
  • Q. 디자인 패턴이란 무엇이며, 자바에서 사용하는 이유는 무엇인가요?
  • Q. 전략 패턴(Strategy Pattern)이란 무엇이며, 이를 사용하는 이유는 무엇인가요?
  • Q.전략 패턴의 주요 구성 요소는 무엇이고, 자바에서는 어떻게 구현하나요?
  • Q. 전략 패턴을 사용했을 때의 장단점은 무엇인가요?
  1. 디자인 패턴

전략 패턴 (Strategy Pattern)

Q. 디자인 패턴이란 무엇이며, 자바에서 사용하는 이유는 무엇인가요?

디자인 패턴은 소프트웨어 개발에서 자주 발생하는 문제들을 해결하기 위해 정형화된 재사용 가능한 솔루션입니다. 자바에서 디자인 패턴을 사용하는 이유는 코드의 재사용성을 높이고, 유지보수성을 향상시키며, 시스템의 유연성을 증가시키기 위함입니다. 또한, 디자인 패턴을 사용하면 개발자 간의 의사소통이 쉬워지고, 코드 구조가 더 명확해집니다.


Q. 전략 패턴(Strategy Pattern)이란 무엇이며, 이를 사용하는 이유는 무엇인가요?

전략 패턴(Strategy Pattern)은 행동을 클래스로 캡슐화하여 동적으로 행동을 변경할 수 있도록 하는 디자인 패턴입니다. 이 패턴을 사용하면 알고리즘을 독립적으로 변경할 수 있어, 클라이언트 코드에서 알고리즘을 쉽게 교체할 수 있습니다. 이로 인해 코드의 유연성과 재사용성이 높아지며, 서로 다른 행동을 필요로 하는 상황에서 코드를 중복하지 않고 확장할 수 있게 됩니다.


Q.전략 패턴의 주요 구성 요소는 무엇이고, 자바에서는 어떻게 구현하나요?

전략 패턴의 주요 구성 요소는 다음과 같습니다.

  • Context : 전략을 사용하는 클라이언트 클래스입니다. 이 클래스는 Strategy 객체를 참조하여 해당 전략을 실행합니다.

  • Strategy 인터페이스 : 동작의 공통 인터페이스를 정의합니다. 각 구체적인 전략은 이 인터페이스를 구현합니다.

  • Concrete Strategy(구체적 전략) : Strategy 인터페이스를 구현한 구체적인 알고리즘이나 행동 클래스들입니다. 각 클래스는 전략 패턴에 의해 호출되어 특정 행동을 수행합니다.

자바에서 전략 패턴을 구현하려면 먼저 Strategy 인터페이스를 정의하고, 다양한 알고리즘을 구현할 Concrete Strategy 클래스들을 만듭니다. 그런 다음, Context 클래스에서 Strategy 객체를 가지고 있으며, 상황에 따라 Strategy 객체를 변경하여 동적으로 다른 전략을 실행합니다.


Q. 전략 패턴을 사용했을 때의 장단점은 무엇인가요?

장점으로는 전략 패턴을 사용하면 코드의 유연성이 높아져, 런타임에 알고리즘을 쉽게 변경할 수 있습니다. 또한, 코드의 중복을 줄이고, 각 전략을 독립적으로 테스트할 수 있어 유지보수가 용이합니다.

단점으로는 클래스 파일이 늘어나고, 전략을 사용하는 클라이언트 코드가 약간 복잡해질 수 있습니다. 각 전략이 별도의 클래스로 구현되기 때문에 작은 규모의 프로젝트에서는 오히려 코드가 복잡해질 수 있으며, 필요 이상의 설계 복잡성을 초래할 수 있습니다.

Previous로드 밸런싱(Load Balancing)Next싱글톤 패턴 (Singleton Pattern)

Last updated 8 months ago