옵저버 패턴(Observer Pattern)이란? 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때 마다 옵저버들에게 변화를 알려주는 패턴이다. 즉 주체란 객체의 상태 변화를 관찰하는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 메시지를 전달 받는 객체를 의미한다. 또한 객체와 주체가 합쳐져 객체의 상태가 변할 때 마다 스스로 옵저버들에게 메시지를 전달할 수도 있다. 옵저버 패턴을 활용한 서비스로 트위터가 있다. 주체를 팔로우했다면 주체가 포스팅을 할 때 마다 팔로워들에게 알림이 간다. 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC 패턴에도 사용된다. 예를 들어 주체(Model)에서 변경이 생기면 옵저버(View)에 알려주고 이를 기반으로 Controll..
전략 패턴(Strategy Pattern)이란? 객체의 행위를 바꾸고 싶은 경우, 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 예를 들어 결제를 할 때 네이버 페이, 카카오 페이 등 다양한 방법으로 결제하듯이 결제 방식의 전략만 바꿔서 두 가지 방식으로 결제하는 것과 같다. 정책 패턴(Policy Pattern)이라고도 한다. 전략 패턴의 장단점 장점 컨텍스트 코드 변경 없이 새로운 전략을 추가할 수 있다. 단점 분리된 전략들이 어느 상황에 사용되는지 알고 있어야 한다. 자바에서의 전략 패턴 장바구니에 담긴 아이템을 KAKAOCard 또는 LUNACard 두 개의 전락으로 결제할 수 있다. import java.util.Arr..
팩토리 패턴(Factory Pattern)이란? 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이다. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 핵심 개념은 추상화와 다형성이다. 팩토리 패턴의 장단점 장점 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가질 수 있다. 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 유연하다. 객체 생성 로직이 분리되어 있어서 유지 보수에 유리하다. 단점 다른 타입의 객체가 필요할 때 마다 하위 클래스가 추가되어야 한다. 자바에서의 팩토리 패턴 abstract class Coffee { public abstract int ..
싱글톤 패턴(singleton pattern)이란? 하나의 클래스에 오직 하나의 인스턴스만을 가지는 패턴이다. 보통 데이터베이스 연결 모듈에 많이 사용된다. 싱글톤 패턴의 장단점 장점 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다. 단점 의존성이 높아진다. -> 의존성 주입을 통해 모듈 간의 결합도를 낮출 수 있다. 단위 테스트를 할 때 각 테스트마다 독립적인 인스턴스를 만들기 어렵다. 자바에서의 싱글톤 패턴 class Singleton { private static class singletonInstanceHolder { private static final Singleton INSTANCE = new Singleton(..
1. 자바에는 있지만 코틀린에는 없는 기능 CheckedException 처리 Java의 CheckedException은 컴파일 에러가 발생하기 때문에 무조건 try-catch로 감싸주거나 throws로 예외를 핸들링해야 한다. try { Thread.sleep(1); } catch (InterruptedException e) { // 예외 처리 } try { log.append(message) } catch (IOException e) { // Do nothing } try { File file = FileUtils.get(filename); } catch (FileNotFoundException e) { // Do nothing } try { return objectMapper.readValue(js..
- Total
- Today
- Yesterday
- 중첩루프조인
- 세컨더리인덱스
- 선언형 프로그래밍
- 프로세스 컴파일
- 대수확장성
- 프로그래밍
- 네트워크 기초
- 코틀린
- 스레드
- 클러스터형인덱스
- 스프링 R2DBC
- 직접연관매핑
- 함수형 프로그래밍
- 정렬병합조인
- 캐시매핑
- 자바
- Design Pattern
- 프로세스
- 메모리 계층
- 디자인 패턴
- 프로세스와 스레드
- 네트워크
- 보이스코드정규형
- 인덱스최적화
- 연관매핑
- 직접매핑
- 불연속할당
- 프로그래밍 패러다임
- 스프링 WebFlux
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |