본문 바로가기
728x90
반응형

분류 전체보기65

100일이나 살았구나, 우리 아들 이미 100일은 지났지만 예쁜 사진을 찍기 위해 우리 부부는 아들이 목을 가눌 때까지 기다렸고 드디어 그 때가 와서 2달 전에 예약해둔 스튜디오로 고고!! 준비물 챙기고 마음을 다 잡고 시흥 배곧에 있는 '이리도 맑음' 스튜디오로 출발. 인스타 주소 https://www.instagram.com/irido_malgeum_baegot/ 취미로 사진을 찍으신다는 사장님이 이렇게 싸도 되나 싶을 정도의 가격에 사진을 찍어 주신다. 밝고 널직한 공간에 아기자기한 귀여운 소품들, 한복도 준비되어 있다. 추천추천! 시간 참 빠른것 같다. 막 태어났을 때 불어있던 모습이 아른거리고, 처음에는 어떻게 안아야 하나? 기저귀는 어떻게 갈지? 게워냈을 때 당황해서 어버버 했던 기억들이 새록새록 떠오르는데, 벌써 세상에 나온.. 2022. 4. 26.
[Design Pattern] Factory Method Pattern, 팩토리 메서드 패턴 DIP(Dependency Inversion Principle), 의존성 역전 원칙 변경에 강한 설계를 하기 위한 방법 중 잘 알려진 SOLID 원칙의 하나로 의존 흐름을 역전시키는 방법으로, 육각형 아키텍처의 포트-어댑터도 이 방법으로 구현할 수 있다. UploadService 의 upload 메서드에서 S3Storage 인스턴스를 생성하고 있기 때문에 UploadService 는 S3Storage 에 의존하고 있으며 강하게 결합하고 있다. S3Storage 는 물리적으로 파일을 업로드하는 인프라적인 영역이므로 포트-어댑터에서 외부 영역으로 볼 수 있는데 서비스 로직이라는 핵심 영역이 외부 영역에 의존하고 있는 형태이다. 이 둘의 관계를 느슨하게 만들기 위해서 의존성 역전이라는 방법을 사용한다. Upl.. 2022. 4. 25.
[Design Pattern] Decorator Pattern, 데코레이터 패턴 OCP(Open-Closed Principle), 개방-폐쇄 원칙 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 기존 코드의 변경 없이 기능을 확장해야 한다는 의미인데, 이 원칙을 지키기 위해서 기존 클래스를 상속받아 사용하거나, 의존 관계를 통한 구성을 사용해야 한다. OCP 의 단골인 DB 커넥션 부분을 살펴보자. 어느 날 갑자기 MySQL 에 심각한 버그가 발견되어 다른 DB 로 교체해야 한다고 하면, MySqlCon 을 사용해서 커넥션을 얻어오는 Repository 클래스의 생성자를 수정해야 한다. Repository 클래스가 MysqlCon 구상 클래스에 강하게 결합되어 있기 때문이다. 이런 코드 변경 없이 확장을 하기 위해서는 슈퍼 타입을 상속 또는 구현한 서브 타입의 인스턴스는 슈퍼.. 2022. 4. 21.
[Design Pattern] Observer Pattern, 옵저버 패턴 구현보다는 인터페이스에 맞춰서 코딩 AObserver 와 BObserver 는 실체를 가지는 클래스로 구현되었다고 할 수 있다. 구현된 클래스를 직접 사용하는 것, 즉 구현에 맞춰서 코딩하는 것은 무엇이 문제일까? class Subject { private final AObserver aObserver; private final BObserver bObserver; public Subject(AObserver aObserver, BObserver bObserver) { this.aObserver = aObserver; this.bObserver = bObserver; } public void notify(string message) { aObserver.update(message); bObserver.u.. 2022. 4. 19.
[Design Pattern] Strategy Pattern, 전략 패턴 헤드퍼스트 디자인 패턴 개정판이 출판되었다. 안 살 이유는 없지. 바로 사서 다시 처음부터 읽어보고 있는데, 이번에는 블로그에 정리를 좀 해볼까 한다. 확장(extends) 과 구성(composition) 상속이라는 말을 좋아하지 않아서 확장이라고 했다. 추상화된 객체를 조금 더 구체적인 객체로 확장해 나가는 것이 확장이다. 예를 들어 '마법사' 객체를 확장해서 '불 마법사', '물 마법사' 등의 객체를 만들 수 있고, '불 마법사' 객체를 확장해서 '공격형 불 마법사', '방어형 불 마법사' 등의 객체를 만들 수 있다. '마법사'보다는 '불 마법사'가 더 구체적이고, '불 마법사'보다는 '공격형 불 마법사'가 더 구체적이다. 구성은 의존관계를 맺는 것이라고 생각하면 된다. 예를 들어 '자동차'라는 객체.. 2022. 4. 18.
[Spring -Beans] BeanFactory Interface #1 아래 공식문서를 순서대로 읽으며 천천히 여유 있게 소스 분석을 해보려고 한다. Spring Framework Documentation Overview history, design philosophy, feedback, getting started. Core IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP. Testing Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient. Data Access Tran docs.spring.io Overview 는 넘어가고 Core 부터 시작한다. 제일 처음 나오는 The IoC Con.. 2022. 4. 17.
728x90
반응형