![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b3Yc4V/btsxtoOqHgZ/oW8XkIXDlkLvKk33ZQKmD1/img.png)
1. 커맨드 패턴이란? 요구사항을 객체로 캡슐화하여, 매개변수를 써서 여러 가지 다른 요구 사항을 집어넣을 수 있다. 요청 내역을 큐에 저장하거나, 로그로 기록할 수도 있으며, 작업취소 기능도 지원 가능하다. 구조 Command - 기능을 수행하기 위한 인터페이스이다. ConcreteCommand - Receiver 객체와 액션끼리의 연결을 수행한다. - execute()를 구현한다. -> 알맞는 Receiver 객체의 메소드를 호출한다. Client - ConcreteCommand 객체를 생성하여 그에 따른 Receiver를 연결한다. Invoker - Command에게 작업을 수행하도록 요청한다. Receiver - 실제로 작업을 처리하는 주체. 2. 동기 - 어떤 요청을 보내게 될 것인지, 누구에게..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/XHLZ7/btstq7xVdKY/TKgV294NMLdn6OPpFuULo0/img.png)
1. 싱글턴 패턴이란? 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 한다. 구성요소 1) Singleton - getSingleData() : 다른 클라이언트들이 그 유일한 객체에 접근할 수 있도록 하는 인스턴스 함수를 제공한다. - 유일 객체를 생성하는 역할을 자기 자신이 할 수 있도록 구현할 수도 있다. 2. 동기 장점: 1) 유일 객체에 대한 통제된 접근성 - Singleton 객체가 자신의 객체를 캡슐화하기 때문에, 클라이언트들이 언제, 어떻게 접근하는 지에 대해 매우 엄격한 통제를 한다. 2) 깔끔하게 쓸 수 있는 네임스페이스 - global variable에 대한 개선책이다. 네임스페이스에 global variable들이 마구잡이로 생성되고 삭제되는 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/byQsOc/btssOqK89ss/QBKCcKnXeRQq2GFzE0NMy1/img.png)
1. 추상 팩토리 패턴이란 무엇인가? 구체적으로 어떤 클래스의 인스턴스를 사용하는 감춘 상태로 서로 연관된 여러 객체를 생성하는 인터페이스를 제공한다. 구성요소 1) AbstractFactory - AbstractProduct 객체를 생성하는 인터페이스를 선언한다. 2) ConcreteFactory - AbstractProduct를 구현하는 구상 객체를 생성하기 위한 행위를 구현한다. 3) AbstractProduct - 한 종류의 Product 객체의 인터페이스를 선언한다. 4) ConcreteProduct - 담당한 ConcreteProduct에 의해 생성되는 객체를 정의함. - AbstractProduct 인터페이스를 구현함. 5) Client - AbstractFactory / AbstractPr..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bJDxxp/btssMGHx2EO/2x9gIoEF5XiZNgEDLc7F40/img.png)
1. 팩토리 메서드 패턴이란? 팩토리 메서드 패턴에서는 객체를 생성하기 위한 인터체이스를 정의한다. 어떤 클래스의 인스턴스를 만들지는 어느 서브클래스에서 결정하게 만든다. 팩토리 메서드 패턴을 이요하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것이다. -> 구체적으로 어떤 것 (객체의 생성)을 만들지는 서브 클래스가 정한다. 구성요소 1) Product - 팩토리 메서드가 생성할 객체의 인터페이스를 정의한다. 2) Creator - 팩토리 메서드를 정의하고, 이 팩토리 메서드는 Product 타입의 객체를 리턴한다. - 구현은 ConcreteCreator에서 하지만, 디폴트 팩토리 메서드를 구현할 수도 있다. 3) ConcreteProduct - Product 인터페이스를 구현한다. 4) C..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/L0kll/btsshxCIuDq/S9YBFTkTFPBnIGQ3ckiIi1/img.png)
1. 데코레이터 패턴이란? 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 구성요소 1. Component - 동적으로 기능을 추가 받을 객체의 인터페이스 2. Decorator - Component 객체에 대한 참조를 가진다. - Component의 인터페이스 타입을 구현한다. (같은 타입을 가진다) 3. ConcreteComponent - 기능이 추가 받을 수는 객체 4. ConcreteDecorator - Component에 기능을 더한다. 기본이 되는 디자인 원칙 OCP(Open-Closed Principle): 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cDC6CQ/btsrRTGFOvK/0EjcQKjtkV6ZaSZ148DRMK/img.png)
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 제어 흐름이란, 객체의 생성/수정/삭제, 메서드 호출 등 프로그램의 전체 흐름을 말하는 것이다.- 위키피디아 간단하게 말하면 프레임워크가 사용자의 코드를 호출하는 것이다. 일반적인 프로그래밍에서는 어플리케이션 코드 (개발자가 작성한 코드)에서 프로그램..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/rJNoh/btsrxnWFBRq/goLJZJ0Oo5k7kBfJ2l2v21/img.png)
1. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 1:N 의존성을 정의한다. 구성요소 1. Subject - Observer 목록을 가지고 있다. Observer의 수에는 제한이 없음. - Observer를 추가/제거 하는 인터페이스 제공 2. Observer - 업데이트 인터페이스를 제공. (이 업데이트 인터페이스는 해당되는 Subject에 변화가 있을 때 갱신하는 것을 의미) 3. ConcreteSubject - ConcreteObserver 객체들이 필요로 하는 정보를 가지고 있다. - 상태가 변하면 가지고 있는 ConcreteObserver들에게 공지함. 4. ConcreteObserver - ConcreteSubje..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/O2Vuc/btsrCwLP8cU/Amlngcws9U7ai6kzS5RleK/img.png)
1. 스트래티지 패턴이란? 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 구성요소 1. Context - ConcreteStrategy 참조 -> Setter - Strategy 객체와 소통 역할 2. Strategy - ConcreteStrategy의 generic 인터페이스 역할 - Context에서 사용할 함수 3. ConcreteStrategy - 세부 행동 구현 기본이 되는 디자인 원칙 1. Encapsulation: 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리한다. 2. Interface: 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 3...
- Total
- Today
- Yesterday
- 프로그래밍 모델
- Kakao Blind
- 카카오 코테
- okhttp3
- 카카오코테
- trie 소스코드
- Java
- 카카오 인턴
- WORA
- digital tree
- decorator
- 2020 KAKAO
- 신규 아이디 추천
- Java #JIT #JVM
- WORE
- KAKAO 2021
- 2021
- 모던 자바 인 액션
- nginx 내부
- 코테
- PatternSyntaxException
- 2019 Kakao Blind
- 스프링
- IOC
- jvm
- 디자인패턴
- behavior parameterization
- 스프링 컨테이너
- Java #GC #가비지콜렉터 #Garbage Collector
- 카카오
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |