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..
1. 데코레이터 패턴이란? 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 구성요소 1. Component - 동적으로 기능을 추가 받을 객체의 인터페이스 2. Decorator - Component 객체에 대한 참조를 가진다. - Component의 인터페이스 타입을 구현한다. (같은 타입을 가진다) 3. ConcreteComponent - 기능이 추가 받을 수는 객체 4. ConcreteDecorator - Component에 기능을 더한다. 기본이 되는 디자인 원칙 OCP(Open-Closed Principle): 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어..
IoC (제어의 역전)란 무엇인가?Inversion of Control is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework.-> 제어의 역전이란 하나의 디자인 패턴으로, 사용자가 작성한 부분이 어느 프레임워크에 의해 제어를 받게 되는 것을 의미한다.여기서 flow of control 제어 흐름이란, 객체의 생성/수정/삭제, 메서드 호출 등 프로그램의 전체 흐름을 말하는 것이다.- 위키피디아 간단하게 말하면 프레임워크가 사용자의 코드를 호출하는 것이다. 일반적인 프로그래밍에서는 어플리케이션 코드 (개발자가 작성한 코드)에서 프로그램..
1. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 1:N 의존성을 정의한다. 구성요소 1. Subject - Observer 목록을 가지고 있다. Observer의 수에는 제한이 없음. - Observer를 추가/제거 하는 인터페이스 제공 2. Observer - 업데이트 인터페이스를 제공. (이 업데이트 인터페이스는 해당되는 Subject에 변화가 있을 때 갱신하는 것을 의미) 3. ConcreteSubject - ConcreteObserver 객체들이 필요로 하는 정보를 가지고 있다. - 상태가 변하면 가지고 있는 ConcreteObserver들에게 공지함. 4. ConcreteObserver - ConcreteSubje..
1. 스트래티지 패턴이란? 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 구성요소 1. Context - ConcreteStrategy 참조 -> Setter - Strategy 객체와 소통 역할 2. Strategy - ConcreteStrategy의 generic 인터페이스 역할 - Context에서 사용할 함수 3. ConcreteStrategy - 세부 행동 구현 기본이 되는 디자인 원칙 1. Encapsulation: 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리한다. 2. Interface: 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 3...
- Total
- Today
- Yesterday
- Java #GC #가비지콜렉터 #Garbage Collector
- digital tree
- KAKAO 2021
- decorator
- WORE
- 코테
- 모던 자바 인 액션
- 디자인패턴
- 프로그래밍 모델
- 2020 KAKAO
- nginx 내부
- 카카오코테
- okhttp3
- Java #JIT #JVM
- 스프링
- PatternSyntaxException
- trie 소스코드
- 카카오
- 카카오 코테
- WORA
- Kakao Blind
- 2021
- behavior parameterization
- 신규 아이디 추천
- 카카오 인턴
- jvm
- 2019 Kakao Blind
- Java
- 스프링 컨테이너
- IOC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |