Podcast
Questions and Answers
디자인 패턴을 배우는 주된 이유는 무엇인가?
디자인 패턴을 배우는 주된 이유는 무엇인가?
- 더 나은 마케팅 전략을 위해
- 문제 해결을 위한 영감을 얻고 의사소통을 효율적으로 하려는 것 (correct)
- 프로젝트 관리 기술을 향상시키기 위해
- 비용을 절감하기 위해
구조 패턴은 객체나 클래스의 알고리즘과 책임 할당에 관한 디자인 패턴이다.
구조 패턴은 객체나 클래스의 알고리즘과 책임 할당에 관한 디자인 패턴이다.
False (B)
디자인 패턴은 몇 가지 큰 종류로 나눌 수 있는가?
디자인 패턴은 몇 가지 큰 종류로 나눌 수 있는가?
3가지
싱글톤 패턴은 하나의 클래스에 _____ 인스턴스만 가지는 패턴이다.
싱글톤 패턴은 하나의 클래스에 _____ 인스턴스만 가지는 패턴이다.
다음 디자인 패턴과 그 설명을 매칭하시오:
다음 디자인 패턴과 그 설명을 매칭하시오:
다음 중 생성 패턴에 포함되지 않는 것은?
다음 중 생성 패턴에 포함되지 않는 것은?
프레임워크는 일반적으로 라이브러리에 비해 규칙이 더 엄격하다.
프레임워크는 일반적으로 라이브러리에 비해 규칙이 더 엄격하다.
TDD에서 싱글톤 패턴의 주된 문제점은 무엇인가?
TDD에서 싱글톤 패턴의 주된 문제점은 무엇인가?
정적 멤버는 _____ 때 모든 클래스를 로드하여 싱글톤 인스턴스를 생성한다.
정적 멤버는 _____ 때 모든 클래스를 로드하여 싱글톤 인스턴스를 생성한다.
다음 중 행동 패턴에 포함되지 않는 것은?
다음 중 행동 패턴에 포함되지 않는 것은?
싱글톤 패턴의 구현 방식 중 하나로, 인스턴스가 없을 때만 잠금을 거는 방식을 무엇이라고 하는가?
싱글톤 패턴의 구현 방식 중 하나로, 인스턴스가 없을 때만 잠금을 거는 방식을 무엇이라고 하는가?
Enum을 사용한 싱글톤 패턴은 스레드 세이프를 보장하지 않는다.
Enum을 사용한 싱글톤 패턴은 스레드 세이프를 보장하지 않는다.
팩토리 패턴의 주된 장점은 무엇인가?
팩토리 패턴의 주된 장점은 무엇인가?
의존성 주입은 메인 모듈이 직접 하위 모듈에 대한 __을 주기보다는 중간에 의존성 주입자가 이 부분을 가로채는 방식이다.
의존성 주입은 메인 모듈이 직접 하위 모듈에 대한 __을 주기보다는 중간에 의존성 주입자가 이 부분을 가로채는 방식이다.
다음 디자인 패턴과 그 의미를 매칭하시오:
다음 디자인 패턴과 그 의미를 매칭하시오:
다음 중 이터레이터 패턴의 장점이 아닌 것은?
다음 중 이터레이터 패턴의 장점이 아닌 것은?
DI와 DIP는 동일한 개념으로 간주될 수 있다.
DI와 DIP는 동일한 개념으로 간주될 수 있다.
전략 패턴의 목적은 무엇인가?
전략 패턴의 목적은 무엇인가?
___ 패턴은 객체 접근 흐름을 가로채는 역할을 한다.
___ 패턴은 객체 접근 흐름을 가로채는 역할을 한다.
다음 중 의존성 주입의 단점으로 옳은 것은?
다음 중 의존성 주입의 단점으로 옳은 것은?
Flashcards are hidden until you start studying
Study Notes
디자인 패턴
- 문제 해결 시 영감을 제공하고 팀원 간의 의사소통을 효율적으로 만든다.
디자인 패턴의 종류
- 생성패턴: 객체 생성에 관한 패턴. (싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입 등)
- 구조패턴: 객체 및 클래스 구조를 유연하고 효율적으로 만드는 방법. (프록시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트 등)
- 행동패턴: 객체나 클래스 간의 알고리즘과 책임 할당에 관한 패턴. (이터레이터, 옵저버, 전략, 책임연쇄, 커맨드, 중재자, 메멘토, 상태, 템플릿 메서드, 비지터 등)
라이브러리 vs 프레임워크
- 라이브러리: 특정 기능을 모듈화, 규칙이 없음, 사용법에 대한 규칙 존재, 커스텀이 가능.
- 프레임워크: 특정 기능을 모듈화, 규칙이 존재, 라이브러리에 비해 엄격함.
싱글톤 패턴
- 하나의 클래스에 오직 하나의 인스턴스를 가지는 패턴.
- 장점: 비용 절감, I/O 바운드 작업에 많이 사용.
- 단점: 의존성 증가, TDD(단위 테스트)에서 독립적인 인스턴스 생성 어려움.
싱글톤 패턴 구현 방법
- 메소드 방식: 인스턴스가 없으면 생성하고, 있으면 반환.
- synchronized: 첫 접근 스레드에 잠금을 걸어 다른 스레드 접근 차단, 성능 저하.
- 정적 멤버/블록: 최초 JVM에서 클래스 로딩 시 인스턴스 생성, 불필요한 자원 낭비 발생.
- Lazy Holder(중첩 클래스): 내부 클래스에서 인스턴스 생성.
- 이중 확인 잠금(DCL): 잠금을 소유하며 인스턴스가 없을 때만 생성.
- enum: 스레드 안전성을 보장하며 인스턴스 생성.
팩토리 패턴
- 상위 클래스가 객체 생성의 뼈대를 결정하고 하위 클래스에서 구체적 내용을 결정.
- 유연성 증가 및 유지보수성 강화.
이터레이터 패턴
- 이터레이터를 사용하여 컨테이너의 요소에 접근.
- 다양한 자료구조를 동일한 인터페이스로 순회 가능.
DI와 DIP
- 의존성 주입: 주 모듈이 하위 모듈에 대한 의존성을 간접적으로 주입.
- 의존관계 역전 원칙(DIP): 의존성 주입 시 적용.
- 단점: 모듈 복잡도 증가, 에러 사전 탐지가 어려움.
전략 패턴
- 캡슐화한 알고리즘을 컨텍스트 안에서 상호 교체 가능하게 만드는 디자인 패턴.
옵저버 패턴
- 주체가 객체 상태 변화를 관찰하고 변화를 옵저버에게 통지하는 패턴.
프록시 패턴
- 대상 객체 접근을 가로채 필터링하거나 수정하는 역할을 하는 디자인 패턴.
Flux 패턴
- 단방향 데이터 흐름 관리 디자인 패턴.
전략 패턴과 의존성 주입의 차이
- 전략 패턴: 행동 계약을 기반으로 다양한 구현의 명시된 인터페이스 생성.
- 의존성 주입: 일부 동작을 구현하고 의존성을 주입하는 패턴.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.