전체 글 (45) 썸네일형 리스트형 팩토리 메서드 vs 추상 팩토리, 다크 모드 예제로 비교하기 다크 모드를 켰는데 글자가 사라졌다. 에러는 하나도 없었다.팩토리 메서드와 추상 팩토리를 공부하면서 직접 만든 예제에서 실제로 본 장면입니다. 두 패턴은 이름도 비슷하고, 정의만 읽으면 둘 다 "객체 생성을 대신해 주는 패턴"이라 차이가 잘 와닿지 않았습니다. 그래서 정의를 외우는 대신, 다크 모드를 만들면서 코드를 세 번 고쳐 봤습니다. 단계마다 문제가 생기고, 패턴으로 풀고, 그 패턴의 한계가 다음 단계의 출발점이 되는 구조입니다.01. 예제 소개: 화면은 배경과 글자뿐예제를 단순하게 만들려고 화면 부품을 딱 두 개로 줄였습니다. 라이트 테마는 흰 배경에 검정 글자, 다크 테마는 검은 배경에 흰 글자입니다.부품은 각자 색만 돌려주는 인터페이스입니다.public interface Background {.. Singleton 헤드 퍼스트 디자인 패턴 5장 싱글턴 패턴을 정리한 글이다. 처음 목차를 봤을 때 솔직히 의아했다. 객체 하나만 만드는 방법을 한 장 전체에 걸쳐서 배운다고?책 속 등장인물도 똑같은 질문을 한다. 그런데 다 읽고 나니 이해가 됐다. 만드는 건 쉬운데, '정말 하나만' 만들어지게 보장하는 게 생각보다 까다로웠다. ■ 싱글턴 패턴이 뭔데? 한 줄로 말하면, 클래스의 인스턴스가 딱 하나만 만들어지도록 보장하고, 어디서든 그 하나에 접근할 수 있게 해 주는 패턴이다. 회사의 대표 전화번호를 생각하면 쉽다. 직원이 몇 명이든 회사 대표 번호는 하나다. 누가 어디서 전화하든 같은 번호로 연결된다. 부서마다 대표 번호를 따로 만들어 버리면 고객은 어디로 전화해야 할지 혼란스러워진다. ■ 1. 왜 하나만 있어야 .. Builder + Prototype 헤드 퍼스트 디자인 패턴에서 빌더, 프로토타입, 싱글턴 패턴을 정리한 글이다. 싱글턴 패턴은 분량이 좀 있어서 다음 블로그에 작성했다. 세 패턴은 모두 '객체를 어떻게 만들 것인가'를 다루는 생성 패턴이다. 처음엔 각각 따로 외웠는데, 하나로 묶어서 보니 차이가 훨씬 잘 보였다. · 빌더 : 단계별로 조립해서 만든다· 프로토타입 : 이미 있는 걸 복사해서 만든다· 싱글턴 : 딱 하나만 만든다 ■ 1. 빌더 패턴 : 단계별로 조립한다 ▶ 한 줄 요약 복잡한 객체를 한 번에 만들지 않고, 여러 단계로 나눠 조립한 다음 마지막에 완성품을 받는 패턴이다. 서브웨이 주문을 떠올리면 쉽다. 빵을 고르고, 치즈를 고르고, 야채를 넣거나 빼고, 소스를 고른 다음 마지막에 샌드위치를 받는다. 사람마다 조합은 다 다르.. L2 스위치에 대해서 사무실 벽의 랜 포트에 노트북을 꽂으면, 아무 설정도 하지 않았는데 옆자리 프린터로 바로 인쇄가 됩니다. 그 사이에서 "이 데이터는 프린터 쪽으로 보내야 해"라고 판단해 준 장치가 있는데, 바로 L2 스위치입니다.이 글에서는 L2 스위치가 무엇을 보고, 어떻게 배우고, 어디까지 할 수 있는지를 차근차근 따라가 보겠습니다.한 줄 정의L2 스위치는 같은 네트워크 안에서, 프레임의 MAC 주소를 보고 필요한 포트로만 내보내는 장치입니다.여기서 L2는 OSI 7계층 중 2계층(데이터 링크 계층)을 뜻합니다. 이 계층에서 데이터를 담는 단위를 '프레임', 장치를 구별하는 주소를 'MAC 주소'라고 부릅니다.스위치 이전에는 허브가 있었다스위치의 가치는 그 전 세대 장비와 비교하면 잘 보입니다. 예전에 많이 쓰던 허.. 팩토리 매소드, 추상 팩토리 헤드 퍼스트 디자인 패턴 4장을 읽고 정리한 글이다. 처음엔 술술 읽혔는데, 다 읽고 나니 "팩토리 메소드랑 추상 팩토리가 뭐가 다르지?"라는 질문에 답을 못 하겠더라. 그래서 책의 피자 가게 예제를 다시 따라가며 정리했고, 처음 보는 사람도 이해하기 쉽게 더 익숙한 예제도 같이 넣었다. ■ 먼저, 팩토리가 뭔데? 팩토리는 말 그대로 공장이다. 프로그래밍에서는 객체를 대신 만들어 주는 코드를 말한다. 카페에서 손님은 직접 커피를 내리지 않는다. 카운터에 "아메리카노 주세요"라고 말하면 바리스타가 만들어 준다. 손님은 결과물만 받으면 된다. 코드도 마찬가지다. 객체가 필요한 쪽이 new로 직접 만들지 않고, 팩토리에게 "이거 만들어 줘"라고 부탁하는 구조가 팩토리 패턴의 기본 아이디어다. ■ 팩토리 패.. 데코레이터 패턴, 날씨 API 예제로 이해하기 디자인 패턴 세미나에서 데코레이터 패턴을 맡게 돼서 예제를 하나 만들고 정리해 봤다. 처음에는 클래스 다이어그램만 보고 "감싼다"는 말이 잘 와닿지 않았는데, 호출이 실제로 어떤 순서로 흘러가는지 하나씩 따라가 보니 그제야 이해가 됐다. 그 과정을 그대로 적어둔다.예제는 Java 17, Gradle, JUnit 5로 작성했다.예제 상황외부 날씨 API를 호출하는 클라이언트가 있다. 여기에 세 가지 기능을 붙이고 싶다.로깅: 요청과 결과, 걸린 시간을 남긴다재시도: 서버가 잠깐 응답하지 않으면 몇 번 더 시도한다캐시: 같은 도시를 다시 물어보면 저장해 둔 결과를 돌려준다일단 한 클래스에 다 넣어보면패턴 없이 만들면 보통 이렇게 된다.public class AllInOneWeatherClient implem.. 옵저버 패턴으로 회원 탈퇴 후 남는 데이터 정리하기 옵저버 패턴옵저버 패턴은 어떤 객체에 일이 생겼을 때, 그걸 지켜보는 다른 객체들에게 알려주는 구조다. 알리는 쪽은 "이런 일이 있었다"는 사실만 전하고, 그 일에 어떻게 반응할지는 받는 쪽이 정한다.Spring에서는 ApplicationEventPublisher로 이벤트를 발행하고 @EventListener나 @TransactionalEventListener로 받으면 이 구조를 쉽게 만들 수 있다.다만 이벤트를 쓰면 코드 흐름이 한눈에 안 보이게 된다. 메서드를 직접 호출하면 따라가기 쉬운데, 이벤트로 바꾸면 누가 이걸 받는지 찾아다녀야 한다. 그래서 이번엔 쓸 곳을 찾기 전에 기준부터 정했다.하나의 사건에 서로 독립적인 여러 대상이 반응하는가발행하는 쪽이 반응하는 쪽을 몰라야 하는 의존 방향인가반응하.. 네트워크 입문: 이더넷 프레임부터 MAC 주소까지 이더넷과 MAC 주소, 궁금했던 8가지『네트워크 프로토콜 입문』의 책 하단 35~52쪽을 읽으며 궁금했던 내용을 질문과 답으로 정리했다.Q1. 실습 구성도에서 스위치와 라우터는 무엇이 다를까?스위치는 같은 LAN 안에서 MAC 주소를 보고 프레임을 전달한다. 라우터는 목적지 IP 주소를 보고 다른 네트워크로 보낸다. 같은 LAN의 `cl1 → cl2` 통신은 스위치를 거치고, 외부 서버로 나갈 때는 라우터 `rt1`도 거친다.Q2. `docker exec -it cl1 /bin/bash`는 무슨 뜻일까?실행 중인 `cl1` 컨테이너 안에 Bash 셸을 열어 명령어를 입력하게 하는 명령이다. `-i`는 입력을 열어 두고, `-t`는 터미널 환경을 제공한다. 여기서 `ip addr`를 실행하면 내 PC가 아.. 이전 1 2 3 4 ··· 6 다음