코딩(38)
-
JAVA 자바 디자인 패턴 : 프록시 패턴, 이터레이터 패턴, 장점 단점, 예시
JAVA 자바 디자인 패턴 : 프록시 패턴 프록시 패턴(Proxy Pattern)은 객체의 대리인 또는 자리채움자로 작동하는 객체를 제공하여 원래 객체에 대한 접근을 제어하거나 기능을 추가하는 디자인 패턴입니다. 이 패턴은 클라이언트와 실제 객체 사이에 중재자 역할을 하는 프록시 객체를 두어, 직접적인 객체 접근을 피하고 여러 가지 유용한 용도로 활용됩니다. 주로 사용되는 용도로는 지연 초기화, 접근 제어, 로깅, 캐싱 등이 있습니다. 프록시 패턴의 종류 프록시 패턴은 크게 세 가지 유형으로 나뉩니다: 가상 프록시(Virtual Proxy): 객체의 생성을 지연시키는 데 사용됩니다. 보호 프록시(Protection Proxy): 객체에 대한 접근을 제어하는 데 사용됩니다. 리모트 프록시(Remote Pr..
2024.04.16 -
JAVA 자바 디자인 패턴 : 전략 패턴, 옵저버 패턴, 장점 단점, 예시
JAVA 자바 디자인 패턴 : 전략 패턴 전략 패턴(Strategy Pattern)은 행동을 클래스의 집합으로 정의하고, 이들을 상호 교환 가능하게 만드는 디자인 패턴입니다. 이 패턴은 객체의 행동을 동적으로 변경할 수 있게 해주어 같은 문제를 해결할 수 있는 여러 알고리즘을 클라이언트 코드에서 직접적으로 분리할 수 있게 합니다. 전략 패턴은 클라이언트가 사용할 알고리즘의 변형을 캡슐화하고, 각 알고리즘을 서로 교체할 수 있게 함으로써 동일한 작업을 다른 방식으로 수행할 수 있도록 합니다. 전략 패턴 구현 예시 다음은 자바로 구현한 간단한 전략 패턴의 예입니다. 여기서는 여러 종류의 정렬 전략을 사용하는 상황을 가정합니다. // 전략 인터페이스 정의 interface SortingStrategy { vo..
2024.04.16 -
JAVA 자바 디자인 패턴 : 팩토리 패턴, 장점 단점, 예시
JAVA 자바 디자인 패턴 : 팩토리 패턴 팩토리 패턴(Factory Pattern)은 객체 지향 프로그래밍에서 객체의 생성을 처리하는 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성 과정의 복잡성을 감소시키고, 클라이언트 코드와 객체 생성 사이의 의존성을 줄이는 데 목적이 있습니다. 팩토리 패턴은 크게 두 종류로 나뉩니다: 팩토리 메서드 패턴(Factory Method Pattern)과 추상 팩토리 패턴(Abstract Factory Pattern). 팩토리 패턴 예시 예를 들어, 다양한 타입의 차량을 생성하는 간단한 팩토리 메서드 패턴을 구현해 보겠습니다. abstract class Vehicle { abstract void startEngine(); } class Car extends Vehicl..
2024.04.16 -
JAVA 자바 디자인 패턴 : 싱글톤 패턴, 장단점, 의존성 주입, 예시
JAVA 자바 디자인 패턴 : 싱글톤 패턴 자바에서 싱글톤(Singleton) 패턴은 객체의 인스턴스가 오직 하나만 생성되도록 보장하는 디자인 패턴입니다. 이 패턴은 전역 변수를 사용하지 않고 객체를 접근할 수 있게 하며, 같은 객체 인스턴스만을 계속해서 재사용합니다. 주로 공유 리소스에 대한 접근 제어나, 설정 정보 같은 경우에 유용하게 사용됩니다. 자바에서 싱글톤 패턴 구현 예시 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 가장 보편적인 방법은 private 생성자와 static 메소드를 사용하는 것입니다. 여기서는 Thread Safe하고 성능도 비교적 우수한 방법인 "Initialization-on-demand holder idiom"을 예로 들어 설명하겠습니다. public class S..
2024.04.16 -
자바 JAVA 코딩테스트 util heap 선언 및 사용법
자바 JAVA 코딩테스트 util heap 선언 및 사용법 자바에서 힙(Heap) 구조는 주로 PriorityQueue 클래스를 사용하여 구현됩니다. PriorityQueue는 자바의 java.util 패키지 안에 있는 클래스로, 힙을 기반으로 하는 우선순위 큐를 제공합니다. 이 큐는 기본적으로 최소 힙의 속성을 가지며, 가장 작은 요소가 항상 루트에 위치합니다. 사용자가 원하는 대로 커스텀 비교자(Comparator)를 사용하여 최대 힙 등 다른 종류의 힙을 구현할 수도 있습니다. PriorityQueue 선언하기 PriorityQueue를 사용하기 위해서는 먼저 해당 클래스를 임포트해야 합니다. 그 후에 PriorityQueue 인스턴스를 생성할 수 있습니다: import java.util.Prior..
2024.04.12 -
자바 JAVA 코딩테스트 util 콜렉션 구현체 : list, map, set, stack, queue 정리
JAVA 코딩테스트 util 콜렉션 구현체 : list, map, set, stack, queue 정리 자바 List import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // Integer 객체들을 저장하는 ArrayList를 선언 List numbers = new ArrayList(); } } public class Main { public static void main(String[] args) { List names = new ArrayList(); // 요소 추가 names.add("Alice"); names.add("Bob"); names.add("..
2024.04.12