반응형

Java 9

생성 패턴 _ 프로토타입 패턴

🧬 프로토타입 패턴 (Prototype Pattern)1. 패턴 개요프로토타입 패턴은 객체를 new 키워드로 새로 생성하지 않고, 기존 객체를 복제(clone)하여 새 객체를 생성하는 생성 패턴입니다.📌 목적: 객체 생성 비용을 줄이고, 런타임 중에 유연하게 객체를 복사해서 사용하기 위함2. 언제 사용하나요?new를 통한 객체 생성 비용이 큰 경우비슷한 객체를 여러 개 생성해야 할 때런타임 동적 구성 기반 객체 생성을 원할 때생성자 대신 유연한 복제 로직이 필요할 때3. 장단점 비교장점 👍단점 👎객체 생성 비용 절감깊은 복사 vs 얕은 복사 문제 발생new 없이 동적으로 객체 생성clone 메서드 구현 필요기존 객체 상태 유지 가능객체 구성 따라 복잡도 증가복잡한 생성자 제거 가능모든 클래스가 C..

생성 패턴 _ 빌더 패턴

🧱 빌더 패턴 (Builder Pattern)1. 패턴 개요Builder 패턴은 복잡한 객체의 생성 과정을 분리하여, 같은 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 해주는 생성 패턴입니다.📌 목적: 생성자가 너무 많거나 복잡할 때, 생성 절차를 메서드 체이닝 방식으로 분리하여 가독성과 안정성을 확보2. 언제 사용하나요?파라미터가 많은 생성자 대신 가독성 있는 객체 생성을 원할 때필수/옵션 필드를 구분하고 싶을 때생성 순서를 조절하거나, 다양한 설정 조합이 필요한 객체일 때불변 객체를 만들고 싶을 때3. 장단점 비교장점 👍단점 👎필드가 많을 때 가독성이 높아짐클래스 수가 증가할 수 있음객체 생성 절차를 캡슐화복잡도 증가 가능불변 객체 생성 가능단순한 객체에는 과할 수 있음메서드 체이닝으로..

생성 패턴 _ 추상 팩토리 패턴

🏭 추상 팩토리 패턴(Abstract Factory Pattern)1. 패턴 개요추상 팩토리 패턴(Abstract Factory Pattern)은 관련된 객체들의 집합(제품군)을 생성하는 인터페이스를 제공합니다.구체적인 클래스를 지정하지 않고도 서로 연관된 객체들을 일관성 있게 생성할 수 있습니다.📌 한 문장 요약:"구체적인 클래스에 의존하지 않고, 관련 있는 객체들을 일관되게 생성할 수 있게 해주는 패턴"2. 언제 사용하나요?서로 관련 있는 객체들(제품군)을 함께 생성해야 할 때객체 간의 호환성을 보장해야 할 때구체 클래스에 의존하지 않고 추상적으로 객체를 생성하고 싶을 때팩토리 메서드가 여러 개 필요할 때예시: 윈도우용 버튼/체크박스와 맥용 버튼/체크박스는 동시에 만들어야 하는 제품군입니다.3...

생성 패턴_팩토리 메서드 패턴

1. 🏭 팩토리 메서드 패턴이란?Factory Method Pattern은 객체 생성 코드를 별도의 팩토리 메서드로 분리하여, 상위 클래스에서는 객체 생성 방식만 정의하고, 실제 생성은 하위 클래스에서 담당하게 하는 패턴입니다.즉, 객체 생성에 대한 책임을 서브클래스에게 위임합니다.핵심 목적: 객체 생성 코드와 객체 사용 코드를 분리 2. 🔧 언제 사용하나?다음과 같은 경우에 유용합니다:객체 생성 로직이 복잡하거나 다양한 형태의 객체를 생성해야 할 때코드의 유연성(확장성) 을 높이고 싶을 때인터페이스/추상 클래스만 알고 구체 클래스를 몰라도 되는 구조가 필요할 때기존 코드를 변경하지 않고 새로운 객체를 쉽게 추가하고 싶을 때예: 로그 기록 방식이 ConsoleLogger → FileLogger → D..

생성 패턴 _ 싱글턴 패턴

⛏️.생성 패턴 중 하나인 싱글턴 패턴에 대해서 알아보겠습니다. 싱글턴은 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근​(액세스) 지점을 제공하는 생성 디자인 패턴입니다. -> 즉. 메모리 상에 고유한 인스턴스를 특정 시점에 인스턴스를 하여서 사용하기 위한 곳에서 어느 곳에서든 접근이 가능하게 하는 것 입니다. 내용이 크게 어렵지 않아서 먼저 코드로 예제를 들겠습니다. public final class Singleton { private static Singleton instance; public String value; private Singleton(String value) { // The following code emulates slow i..

250224_ 자바 GUI 기능들..

자바 GUI- .net의 윈폼처럼 자바에서 지원하는 UI Tookit 같은 클래스들의 모음집- 주로 java.awt 나 javax.swing 의 패키지를 이용함https://docs.oracle.com/en/java/javase/23/docs/api/java.desktop/java/awt/package-summary.html java.awt (Java SE 23 & JDK 23)A border layout lays out a container, arranging and resizing its components to fit in five regions: north, south, east, west, and center. The DisplayMode class encapsulates the bit dept..

Java 2025.02.24

250213_자바 FileIOStream 클래스들

- 파일 스트림들  - 파일 In, Out input 관련 기능을 모아 놓은 Stream 클래스들임  - 당연히 파일을 열고 닫기 떄문에 .close를 해줘야함, 대신 try (){}에서 ()안에 작성하면 try 구문을 나가면 자동으로 닫아 줌인풋 / 리더기package Chapter23;import java.io.FileInputStream;import java.io.IOException;public class FileInputStreamTest01 { public static void main(String[] args) { try(FileInputStream fis = new FileInputStream("inputText.txt");){ int data; ..

Java 2025.02.13

250212_자바 람다식, 스트림, 예외처리

람다란? - 람다라는 단어는 수학 람다 대수에서 비롯되었음 - 익명 함수를 의미함 - 함수 지향 프로그래밍에서 자주 쓰이는 기법 - 이름 처럼 익명 함수를 의미하기 때문 함수를 선언과 구현이 대부분 같이 되는 것이 특징임 package Chapter20;public interface Printer { void Print();}인터페이스 선언 - 단일 함수 지향 package Chapter21;import Chapter20.Printer;public class LambdaEx01 { public static void main(String[] args) { //{}생략 버전, 실행문이 한 줄 일 때 Printer printer = () -> System.out.printl..

Java 2025.02.12

250211_Java 중첩 클래스

중첩 클래스? - 클래스 내부에서 또 다른 클래스를 선언하여 사용하는 방법임 - SOLID 기준으로 단일 책임 원칙 (Single responsibility principle) 에는 조금 위배되는 내용이긴 하나 사용할 수 있는 기법이긴 함 단일 책임 원칙 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍에서 단일 책임 원칙(single responsibility principle)이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일ko.wikipedia.org- 자바에서 사용하는 중첩 클래스의 사용 방법은 크게 3가지로 생각됌   1. static를 사용하여 선언 되는 클래스 내부에서 static 처럼 사용하는 방법 2. 내부 클..

Java 2025.02.11
반응형