
1. 컴포지트 패턴이란 컴포지트 패턴을 이용하면 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있다. 이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체를 똑같은 방법으로 다룰 수 있다. 구성요소 Composite라는 단어 자체가 복합적인, 합성적인이라는 뜻이다. 어떤 객체 구조가 여러 계층으로 구성되어 있는 복잡한 구조일 때 적용하는 패턴인데, 전형적인 컴포지트 객체는 이런 식으로 생겼다. Component - 복합적인 구조를 지닌 객체 (Composite object) 들의 공통 인터페이스 - 모든 객체들이 가지고 있는 default한 기능을 여기서 구현할 수 있다. - 자녀 컴포넌트에 접근하거나 관리하는 인터페이스를 선언한다. - (선택사항) 필..

1. 이터레이터 패턴이란? 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해준다. 구성요소 1) Iterator - 아이템에 접근할 수 있도록 해주는 인터페이스를 정의한다. 2) ConcreteIterator - Iterator 인터페이스를 구현한다. - 집합체 내부를 접근할 때 현재 위치를 기억한다. 3) Aggregate - Iterator 객체를 생성하기 위한 인터페이스를 제공한다. 4) ConcreteAggregate - Iterator 생성 인터페이스를 구현하고 해당하는 ConcreteIterator 인스턴스를 반환한다. 2. 동기 이터레이터 패턴의 핵심은 집합체(리스트, 맵, 등등)의 각 아이템에 대한 접근과 순회하는 책임을 ..

1. 템플릿 메소드 패턴이란 템플릿 메소드는 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스의 특정 단계를 재정의 할 수 있다. 구성요소 1) AbstractClass - 추상화된 기본 함수들을 정의한다 (나중에 ConcreteClass가 구현할). - 알고리즘의 뼈대를 정의하는 템플릿 메소드를 구현한다. 이 템플릿 메소드는 추상 메소드로 정의한 기본 함수들을 호출할 수 있으며 다른 내/외부 함수들을 호출할 수도 있다. 2) ConcreteClass - 상속한 AbstractClass의 기본 함수들을 구체적으로 구현한다. 적용된 디자인원칙 일부 구체적인 로직은 하위 ConcreteClass..

1. 어댑터 패턴? 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 구조 Target - Client가 사용할 특정 도메인에 한정되는 인터페이스 Client - Target와 연관된 객체들을 사용한다. Adaptee - 변환이 필요한 인터페이스 Adapter - Adaptee 인터페이스를 Target 인터페이스의 규격에 맞춘다. 간단하게 말하자면: Adaptee를 Target의 형식에 끼워 맞추는 역할을 Adapter가 담당하는 것이다. - 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 - 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를..

1. 커맨드 패턴이란? 요구사항을 객체로 캡슐화하여, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수 있다. 요청 내역을 큐에 저장하거나, 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능하다. 구조 Command - 기능을 수행하기 위한 인터페이스이다. ConcreteCommand - Receiver 객체와 액션끼리의 연결을 수행한다. - execute()를 구현한다. -> 알맞는 Receiver 객체의 메소드를 호출한다. Client - ConcreteCommand 객체를 생성하여 그에 따른 Receiver를 연결한다. Invoker - Command에게 작업을 수행하도록 요청한다. Receiver - 실제로 작업을 처리하는 주체. 2. 동기 - 어떤 요청을 보내게 될 것인지, 누구에게..

1. 싱글턴 패턴이란? 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 한다. 구성요소 1) Singleton - getSingleData() : 다른 클라이언트들이 그 유일한 객체에 접근할 수 있도록 하는 인스턴스 함수를 제공한다. - 유일 객체를 생성하는 역할을 자기 자신이 할 수 있도록 구현할 수도 있다. 2. 동기 장점: 1) 유일 객체에 대한 통제된 접근성 - Singleton 객체가 자신의 객체를 캡슐화하기 때문에, 클라이언트들이 언제, 어떻게 접근하는 지에 대해 매우 엄격한 통제를 한다. 2) 깔끔하게 쓸 수 있는 네임스페이스 - global variable에 대한 개선책이다. 네임스페이스에 global variable들이 마구잡이로 생성되고 삭제되는 ..

1. 추상 팩토리 패턴이란 무엇인가? 구체적으로 어떤 클래스의 인스턴스를 사용하는 감춘 상태로 서로 연관된 여러 객체를 생성하는 인터페이스를 제공한다. 구성요소 1) AbstractFactory - AbstractProduct 객체를 생성하는 인터페이스를 선언한다. 2) ConcreteFactory - AbstractProduct를 구현하는 구상 객체를 생성하기 위한 행위를 구현한다. 3) AbstractProduct - 한 종류의 Product 객체의 인터페이스를 선언한다. 4) ConcreteProduct - 담당한 ConcreteProduct에 의해 생성되는 객체를 정의함. - AbstractProduct 인터페이스를 구현함. 5) Client - AbstractFactory / AbstractPr..

1. 팩토리 메서드 패턴이란? 팩토리 메서드 패턴에서는 객체를 생성하기 위한 인터체이스를 정의한다. 어떤 클래스의 인스턴스를 만들지는 어느 서브클래스에서 결정하게 만든다. 팩토리 메서드 패턴을 이요하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이다. -> 구체적으로 어떤 것 (객체의 생성)을 만들지는 서브 클래스가 정한다. 구성요소 1) Product - 팩토리 메서드가 생성할 객체의 인터페이스를 정의한다. 2) Creator - 팩토리 메서드를 정의하고, 이 팩토리 메서드는 Product 타입의 객체를 리턴한다. - 구현은 ConcreteCreator에서 하지만, 디폴트 팩토리 메서드를 구현할 수도 있다. 3) ConcreteProduct - Product 인터페이스를 구현한다. 4) C..
- Total
- Today
- Yesterday
- zipkin
- 카카오코테
- Java
- decorator
- Kakao Blind
- 디자인패턴
- Spring
- nginx 내부
- WORE
- 스프링
- 신규 아이디 추천
- 2021
- 프로그래밍 모델
- jvm
- 카카오 코테
- Java #JIT #JVM
- 모던 자바 인 액션
- PatternSyntaxException
- 카카오
- WORA
- Java #GC #가비지콜렉터 #Garbage Collector
- KAKAO 2021
- 2020 KAKAO
- IOC
- 카카오 인턴
- behavior parameterization
- spring cloud sleuth
- okhttp3
- 코테
- 2019 Kakao Blind
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |