일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IntelliJ
- gradle
- git초보
- 엑셀중급강의
- java
- MYSQL
- python
- 자바패턴
- 민생회복지원금
- Ai
- git입문
- gitreflog
- 버전관리
- AES256
- 엑셀
- 개발툴팁
- git초보자팁
- 디버깅
- 민생회복소비쿠폰
- JetBrains
- 주식용어
- 엑셀강의
- git
- git연재
- Spring
- scrapy
- 엑셀고급강의
- 개발생산성
- docker
- GPT
목록IT/JAVA (42)
나만의공간
복합체 패턴(Composite Pattern)이란? 트리 구조를 우아하게 처리하는 디자인 패턴복합체 패턴(Composite Pattern)은 객체들을 트리 구조로 구성하여, 개별 객체와 복합 객체를 동일한 방식으로 처리할 수 있도록 도와주는 구조 패턴입니다. 즉, 부분과 전체를 같은 인터페이스로 다룰 수 있게 해주는 것이 핵심입니다.📌 복합체 패턴의 핵심 정의객체들을 계층 구조로 구성 (트리 구조)Leaf(개별 객체)와 Composite(복합 객체)를 동일하게 다룸클라이언트가 객체 구조의 복잡성을 신경 쓰지 않아도 됨🎨 실생활 비유: 파일 탐색기Windows 탐색기나 Mac의 Finder를 생각해보세요. 폴더 안에는 파일이 있고, 또 다른 폴더가 들어갈 수 있죠.📁 root ├─ 📄 README...
브리지 패턴(Bridge Pattern) 완전 정복 - 자바 실무 예제로 이해하기디자인 패턴 중에서 기능 계층과 구현 계층을 분리하여 구조를 유연하게 만들어주는 브리지 패턴(Bridge Pattern)에 대해 들어보셨나요?이 글에서는 어댑터 패턴(Adapter Pattern)과 비교되는 브리지 패턴의 개념부터 자바 실무 예제까지 쉽게 정리해드립니다.✅ 브리지 패턴이란?브리지 패턴(Bridge Pattern)은 기능(추상)과 구현(구체)을 독립적으로 분리하여 확장이 용이하도록 돕는 구조 디자인 패턴입니다.클래스 간 결합도를 낮추기 위해 상속 대신 위임을 활용새로운 기능이나 구현이 추가될 때 기존 클래스에 영향 없이 확장 가능📌 Adapter Pattern과의 차이점어댑터 패턴(Adapter Pattern..
어댑터 패턴(Adapter Pattern)이란? 구조가 다른 코드를 연결하는 스마트한 방법소프트웨어를 개발하다 보면 기존 시스템은 그대로 유지하면서도 새로운 외부 라이브러리나 코드 구조를 통합하고 싶을 때가 있습니다. 이런 상황에서 어댑터 패턴(Adapter Pattern)이 큰 도움이 됩니다.🧱 어댑터 패턴의 핵심 목적어댑터 패턴은 서로 호환되지 않는 두 인터페이스를 중간에서 변환해주는 구조적 디자인 패턴입니다. 마치 220V 콘센트에 110V 노트북 충전기를 연결할 때 사용하는 전압 어댑터처럼, 기존 시스템을 수정하지 않고도 새로운 코드를 유연하게 통합할 수 있습니다.[기존 코드] = 콘센트 (220V)[새 코드] = 노트북 충전기 (110V)[중간 어댑터] =..
✅ 목적:하나의 클래스에 대해 오직 하나의 인스턴스만 존재하도록 보장하고,어디서든 전역으로 접근 가능하게 만드는 패턴입니다.📌 2. 언제 사용하나요?설정 클래스 (Config)로깅, 캐시, 데이터베이스 연결 객체공유 리소스를 관리할 때🚫 예를 들어 볼게요:Logger log1 = new Logger();Logger log2 = new Logger();log1.write("Hello");log2.read(); // log1과 log2는 서로 다른 인스턴스니까 데이터 공유 안됨!→ 로그가 따로 관리되면 안 되니까 하나의 Logger 인스턴스만 쓰게 만들어야 해요!🎯 싱글턴 구현 핵심 포인트생성자를 private으로 막기내부에서 자기 자신을 static으로 한 번만 생성public static 메서드로 ..
✅ 목적새로운 객체를 생성할 때, 기존 객체를 복사(clone) 해서 만드는 패턴입니다.✅ 특징new 키워드를 쓰지 않고 객체를 복사해서 성능 최적화복잡한 초기화 과정을 피할 수 있음📌 2. 언제 쓰나요?객체 생성 비용이 클 때 (예: 복잡한 계산이나 DB 접근이 필요한 초기화)동일한 구조를 가진 객체를 여러 개 만들고 싶을 때기존 객체와 거의 비슷한 객체를 빠르게 생성하고 싶을 때🎯 예시 시나리오회사에서 여러 유형의 문서(Document) 를 관리하는데,사용자가 기존 문서를 복사해서 새 문서를 만들고 싶어해요.이때 복사 기능을 쉽게 만들고 싶습니다.🧪 3. 자바에서는 어떻게 구현하나요?자바는 Cloneable 인터페이스와 clone() 메서드를 사용해서얕은 복사(shallow copy) 또는 깊은..
✅ 빌더 패턴이란?복잡한 객체를 단계적으로 생성할 수 있게 해주는 생성 패턴입니다.생성자에 파라미터가 너무 많거나어떤 속성은 필수, 어떤 속성은 옵션일 때코드 가독성과 유지보수성을 높이고 싶을 때 유용합니다.📌 언제 사용하나요?생성자 파라미터가 너무 많아 순서가 헷갈릴 때선택적 필드를 유연하게 설정하고 싶을 때객체 생성 코드를 더 읽기 쉽게 만들고 싶을 때😵 복잡한 생성자의 예User user = new User("홍길동", 30, "서울", "010-1234-5678", true, "developer", "소개글");이게 뭐가 뭔지 한눈에 잘 안 들어오죠?😎 빌더 패턴 사용 예User user = User.builder() .name("홍길동") ..
“TV는 삼성인데 냉장고는 LG라고요?”제품을 세트로 깔끔하게 구성하고 싶을 때 사용하는 디자인 패턴이 있습니다. 바로 추상 팩토리 패턴입니다.🧩 1. 추상 팩토리 패턴이란?추상 팩토리 패턴은 관련된 객체들을 세트로 생성할 수 있게 해주는 디자인 패턴입니다.즉, 여러 팩토리를 하나의 슈퍼 팩토리로 묶어, **제품군(product family)**을 일관성 있게 구성할 수 있게 합니다.✅ 목적 요약TV와 냉장고처럼 관련된 객체를 묶음으로 생성제품군이 다를 경우(삼성, LG 등) 각기 다른 객체 조합 제공클라이언트는 어떤 구체 클래스를 사용하는지 모르도록 추상화📌 2. 언제 사용하나요?사용 상황설명🧩 관련된 객체들을 세트로 생성TV–냉장고, 버튼–입력창 같은 UI 컴포넌트 등🏗️ 브랜드, 환경, 플랫..
객체를 만들 때마다 new를 남발하고 있다면? 유지보수와 확장성에 골치 아픈 코드를 만나기 전에 꼭 알아야 할 디자인 패턴, 바로 **팩토리 패턴(Factory Pattern)**입니다.🏭 1. 팩토리 패턴이란?팩토리 패턴은 객체 생성을 팩토리(공장) 역할을 하는 클래스에 맡기는 구조입니다.즉, 직접 new 키워드를 사용하지 않고, 특정 조건에 따라 객체를 유연하게 생성할 수 있도록 도와줍니다.✅ 목적객체 생성 로직을 캡슐화해서 코드의 복잡도를 낮춤같은 인터페이스를 구현한 다양한 객체를 상황에 따라 선택 생성객체 생성을 중앙 집중화하여 유지보수와 테스트에 유리❓ 2. 왜 팩토리 패턴을 써야 할까요?예를 들어, 이런 고민 해본 적 있으신가요?"조건에 따라 서로 다른 클래스를 만들어야 하는데 코드가 너무 ..
Stream을 만드는 다양한 방법이 있습니다. 신규로 생성된 Stream 객체는 원 Stream 객체를 수정하지 않으므로 단일 소스에서 여러 Stream 객체를 생성할 수 있습니다. 빈 Stream 객체 생성 빈값이 존재하는 Stream 객체를 생성합니다. package jpabook.jpashop.stream; import java.util.stream.Stream; public class StreamEmpty { public static void main(String[] args) { Stream streamEmpty = Stream.empty(); if (streamEmpty == null || streamEmpty.count()==0) { System.out.println("Stream 객체는 값..
자바 Stream에 기본사용법에 대한 설명을 진행하였고, 이제는 Stream에서 제공하는 기본적인 Operations 종류들에 대해서 알아보고자 합니다. Stream에는 유용한 기능들이 많이 제공됩니다. count() & distinct() count(): Stream 객체의 요소 개수를 반환합니다. distinct(): Stream 객체의 중복을 제거한 새로운 Stream을 반환 합니다. 중복이 제거한 후에 반환된 Stream은 새로운 객체가 됩니다. package jpabook.jpashop.stream; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream..