일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Galera Cluster
- Algorithm
- Data Structure
- 운영체제
- IT
- Heap
- 자바
- mongoDB
- C
- JavaScript
- MySQL
- 백준
- 컴퓨터구조
- redis
- 자료구조
- design pattern
- 알고리즘
- Kafka
- 네트워크
- spring webflux
- Spring
- 파이썬
- JPA
- MSA
- OS
- Proxy
- Java
- c언어
- 디자인 패턴
- react
- Today
- Total
목록Java (49)
시냅스
Mediator Pattern 객체간의 상호 작용을 하나의 객체에서 캡슐화하여 처리 UI 프로그래밍에서 많이 사용되는 방법으로 Widget 간의 상호 처리를 서로간에 처리하는 것이 아닌 한 객체가 전담하여 처리하도록 하는 방식 객체 서로간의 메세지를 전달할 일이 있을 때도 중재자를 두고 전달할 수 있음 N:N 의 관계를 1:N의 관계로 바꿀 수 있음 객체 지향 방법론에서는 객체의 관련된 처리는 객체 내부에서 하는 것이 맞지만, 그렇게 하면 상호작용의 급증이 발생하고 시스템의 변경이 어려움 Mediator 객체가 상호작용을 제어하고 조율하게 함, 각 객체는 다른 객체의 참조자는 알 필요 없이 Mediator만 알면 됨 Mediator Colleague 객체와 교류하는데 필요한 인터페이스를 정의 Concre..
Bridge Pattern 기능의 계층과 구현의 계층을 분리함 추상화와 구현을 분리하여 각각을 독립적으로 변경할 수 있게 함 기능의 확장과 구현의 확장을 따로 계층화 함 기능에 대한 여러가지 구현을 다양하게 적용할 수 있음 기능과 구현이 혼자하면 상속의 관계가 복잡해짐 두 계층을 분리하고 서로의 사이에 다리(Bridge)가 필요함 Abstraction (List) 추상화 개념의 상위 클래스이고 객체 구현자 (Implementor)에 대한 참조자를 관리 RefinedAbstraction (Stack, Queue) 추상화 개념의 확장된 기능을 정의 Implementor (AbstractList) 구현 클래스에 대한 선언을 제공 하위 클래스가 구현해야 하는 기능들을 선언한다. Implementor와 Abstr..
Abstract Factory Pattern 여러 제품굼을 하나의 Set으로 생성하는 패턴 구체적인 클래스를 생성하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 추상화된 인터페이스 팩토리를 제공하고 상황에 따라 그에 맞는 인스턴스들이 생성되도록 한다. 생성되고 구성되고 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 하나 이상의 제품군들 중 하나를 선택하여 시스템을 설정해야 하고 한 번 구성한 제품을 다른 것으로 대체할 수 있을 때 AbstractFactory 개념적 제품에 대한 객체를 생성하는 오퍼레이션 인터페이스를 정의한다. ConcreteFactory 구체적인 제품에 대한 객체를 생성하는 오퍼레이션을 구현한다. AbstractProduc..
반복자 패턴 Iterator Pattern 객체 요소들의 내부 표현방식을 공개하지 않고, 객체에서 되지 않은, 외부에서 객체에 순회하는 객체를 만든다. 내부에서 객체의 순차적인 제공을 하지 않음 순회 구현 방식이 다르더라도 동일한 방식(메서드)로 순회 할 수 있게 제공 여러 리스트 객체에 대한 동일한 방식으로 순회하는 방법을 제공하기 위해 순회하는 객체를 따로만듬 e.g. Java Collection Framework의 Iterator Iterator 요소에 접근하고 순회하는데 필요한 메서드 제공 ConcreteIterator Iterator에 정의된 인터페이스를 구현하는 클래스 Aggregate Iterator 객체를 생성하는 인터페이스 정의 순회할 요소를 가지고 있다. ConcreteAggregate..
옵저버 패턴 Observer Pattern 객체 사이에 일대다의 의존 관계가 있고, 어떤 객체의 상태변하게 되면 그 객체에 의존성을 가진 다른 객체들이 변화의 통지(notify or update)를 받고 자동으로 갱신될 수 있게 함 dependent, publish-subscribe 하나의 객체에 연동되는 여러 객체 집합이 있을 때 변화에 대한 일관성은 유지하고, 객체간의 결합도는 낮게하기 위한 패턴 느슨한 결합 Loose coupling : 느슨하게 결합되어 있다는 것은 상호작용을 하지만 서로 잘 모른다는 것 변화에 관심이 있는 객체에 대한 가정없이 통보될 수 있도록 해야 함 주로 data - view 의 관계에서 사용됨 log와 handler들의 관계. (file, console, 등등) Subjec..
템플릿 메소드 패턴 Template Method Pattern 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스에 위임 Operation 에 알고리즘의 기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에 정의한다 추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함으로써 템플릿 메소드의 처리순서를 정할 수 있다. AbstractClass 서브 클래스들이 반드시 구현해야 하는 알고리즘 처리 단계 내의 기본 오퍼레이션이 무엇인지를 정의한다. 서브 클래스에서 이들 오퍼레이션들을 구현한다. Hook method : 추상 클래스 내에 선언(declaration)되어 있는 메소드이지만, 기본적인 내용만 있거나 아무 내용도 들어있지 않음 template method는 final 키워드를 통해..
스테이트 패턴 State Pattern 클래스가 하나의 상태에 따라 그 내부의 여러 메서드의 기능이 바뀐다고 하면 이를 각각의 클래스로 분리한다. 의도와 동기 객체의 기능은 상태에 따라 달라질 수 있는데, 이러한 상태가 여러가지이고, 클래스 전반의 모든 기능이 상태에 의존적이라 하면, 상태를 클래스로 표현하는 것이 적절함 클래스로 분리하지 않게 되면 상태가 여러가지인 경우 많은 if-else 문이 사용되고 추후 상태가 추가되거나 삭제될 때 수정해야 하는 사항이 너무 많아짐 Context : ConcreteState의 인스턴스를 관리하고 서로 상태가 바뀌는 순간을 구현할 수 있다. State : Context 가 사용할 메서드를 선언한다. ConcreateState : 각 상태 클래스가 수행할 State에..
프론트 컨트롤러 패턴으로 이뤄져있다. 서블릿이 호출되면 HttpServlet이 제공하는 service가 호출된다. 스프링 mvc는 DispatcherServlet의 부모인 FrameworkServlet에서 service를 override해두었다. FrameworkServlet.service를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch()가 호출된다. doDispatch()는 다음과 같다. 요청이 들어오면 핸들러 매핑을 통해 핸들러(컨트롤러)를 조회할 수 있는지 확인하고 핸들러 어댑터 목록에서 핸들러를 처리할 수 있는 핸들러 어댑터가 있는지 확인해서 핸들러 어댑터를 통해 핸들러의 컨트롤러를 실행하고 반환하는 정보를 ModelAndView로 변환해서 반환한다. 반환..
서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다. 서버에서 해야하는 일 서버 TCP/IP 연결 대기, 소켓 연결 HTTP 요청 메세지를 파싱해서 읽기 HTTP 메소드 방식, url pattern 인지 content-type 확인 HTTP 메시지 바디 내용 파싱 비즈니스 로직 수행 db connection 등 HTTP 응답 메세지 생성 시작 HTTP 시작 라인 생성 Header 생성 메세지 바디에 HTML 생성해서 입력 TCP/IP 에 응답 전달, 소켓 종료 Servlet을 지원하는 WAS 사용 시 지원 위에서 보았던 비즈니스 로직 수행 이외의 모든 것..
팩토리 메소드 패턴 Factory method Pattern 인스턴스 작성을 하위 클래스에게 위임. Template Method 패턴을 인스턴스 생성에 적용 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스에서 결정하게 함. 여러 상황에 따라 각각 생성될 수 있는 객체에 대한 생성을 하위 클래스에 위임 생성과 관련된 동일한 메서드는 상위 클래스에서 처리 객체를 만들어 반환하는 함수를 (생성자 대신) 제공하여 초기화 과정을 외부에서 보지 못하게 숨기고 반환 타입을 제어하는 방법. package factory; abstract class Car { String productName; public String toString() { return produ..