일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터통신
- javascript
- Java
- cache
- html
- Lombok
- 네트워크
- reactive
- AWS
- libuv
- mongodb
- socket
- VCS
- r
- redis
- Linux
- git
- Elk
- Static
- HTTP
- github
- NoSQL
- Heap
- nodejs
- ajax
- spring
- effective
- reactor
- network
- mybatis
- Today
- Total
목록디자인패턴 (5)
빨간색코딩
참조문서 https://martinfowler.com/tags/domain%20driven%20design.html Domain Driven Design Quickly (도메인 주도 설계란 무엇인가? 쉽고 간략하게 이해하는 DDD, 플로이드 마리네스쿠 지음, 최수경 옮김)을 읽고 이해한 내용을 정리해보았다. Evans Eric 의 Domain-Driven Design: Tackling Complexity in the Heart of Software 는 2003년 8월 22일 초판인데, 이걸 기반으로 2011년에 쓴 책이라고 한다. 책에 있는 내용을 기반으로 썼지만, 좀 더 쉬운 이해를 위하여 예제를 덧붙이거나, 주관적 해석, 책에 없는 내용(반 버논의 주석, Spring 프레임워크에서 DDD 이야기 등)..
참조문서 https://dzone.com/articles/understanding-reactor-pattern-thread-based-and-eve https://stackoverflow.com/questions/14317992/thread-per-connection-vs-reactor-pattern-with-a-thread-pool https://hila.sh/2019/12/28/reactor.html 1. 반응자(Reactor) 패턴이란? 동시성을 다루는 디자인 패턴 중 하나로, 동시에 들어오는 여러 클라이언트의 요청들을 처리하는 기법이다. 순차적으로 처리 멀티프로세스, 멀티스레드 대신 싱글스레드를 채택함으로써, C10K 문제 해결 이벤트 핸들링 패턴, event driven architecture ..
1. 관찰자(Observer) 패턴이란? 리액티브 프로그래밍의 기초이며, 대부분의 MVC, UI라이브러리들이 내부적으로 사용하는 디자인 패턴이다. Model = Subject(=Observable) , View = Observer 라고 보면, 모델 데이터의 변화에 따라 UI가 바뀌어보이는 것들 Swing 에서 각종 버튼들과 리스너들 관찰자 패턴에는 이벤트를 발생시키는 역할(주체)와 이벤트를 수신하는 역할(관찰자)가 있다. 주체(subject)는 관찰자(observer)에게 상태변경을 알려준다. 이벤트 기반 처리 일대다 의존성 등록 가능 단방향 통신 2. UML과 인터페이스 public interface Subject { void registerObserver(Observer observer); // 동시..
jdbcTemplate, restTemplate 등 스프링에서 지원하는 많은 템플릿들을 보았다. 이런 것들은 기계적이며 길고 반복적인 코드들을 깔끔하게 처리해준다. (ex. jdbc 코드를 짤때 커넥션부터해서 close까지의 그 긴 코드를 몇 줄만으로도 똑같은 기능을 할 수 있는..) 이런 것들이 바로 템플릿 메소드 패턴이 적용된 좋은 예제들이다.(근데 더 알아보니까 다른 디자인패턴이라는 듯...ㅜ) 가져다 쓰기만 하면 재미없으니 탐구를 해보자ㅋㅋ1. 템플릿메소드 패턴은 왜 쓰는가? 네이버 이미지에서 따온 사진이다. 이것만큼 템플릿을 잘 설명할 수 없을 것 같다ㅋㅋㅋ 이 템플릿 자를 사용하면 누구나 똑같은 네모세모를 찍어낼 수 있다. 템플릿메소드도 이와 무관하지 않다. 상위 클래스(추상 클래스)에서는 템..
인스턴스를 생성할 때 파라미터가 많을 수록, 매우 많은 경우의 수가 생긴다. 파라미터A는 값이 들어있을수도, B는 안들어있을수도 있는 등등등. 이럴 경우 대응할 수 있는 방안이 내 생각에서는 아래와 같았다.오버로딩으로 사용할 만한 경우마다 생성자를 생성한다.하나의 생성자에서 파라미터를 그냥 null 로 넘긴다.그런데 타인의 코드를 보던 도중 VO 에 빌더패턴을 적용한 것을 보았다..!1. Builder 패턴은 왜 쓰는가?위의 서문같은 경우를 해결할 수 있다. 또한 아래와 같은 장점들이 있다.인스턴스를 생성할 때 인자를 선택적으로 가독성 좋게 넘길 수 있다.인자의 순서에 상관이 없어진다.불필요한 생성자를 만들지 않는다.2. 사용 예제아래처럼 생성자를 멤버변수들을 나열해도 좋고, ComputerBulider..