본문 바로가기

전체 글

(161)
어댑터 (Adapter) 패턴 https://velog.io/@sillutt/%EC%96%B4%EB%8C%91%ED%84%B0-Adapter-%ED%8C%A8%ED%84%B4 어댑터 (Adapter) 패턴 어댑터 패턴 velog.io 어댑터(Adapter) 패턴 클라이언트가 사용하는 인터페이스가 전혀 다르며 정해져 있고, 기존의 코드를 호환하여 재사용할 수 있도록 구현체로 변경해주는 패턴. 클라이언트는 타겟 인터페이스만으로 사용하고, 구현체를 담당하는 Adaptee와 타겟 사이의 Adapter를 활용한다. ex) Security package Security package는 다른 애플리케이션에서도 사용할 수 있지만, Account 및 Service는 특정 애플리케이션에서만 사용한다. 즉, Security package는 타겟에 해당하..
프로토타입 (Prototype) 패턴 https://velog.io/@sillutt/%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85-Prototype-%ED%8C%A8%ED%84%B4 프로토타입 (Prototype) 패턴 프로토타입 패턴 velog.io 프로토타입 패턴 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 복제 기능을 가진 기존 인스턴스를 프로토타입으로 사용하여 새 인스턴스를 만들어 일부를 변경하여 사용한다. 기존의 인스턴스 생성에 시간이 오래 걸리는 경우 (DB를 읽어 생성, 네트워크의 API요청 데이터 기반 등) public class App { public static void main(String[] args) { GithubRepository repository = new Gith..
빌더 (Builder) 패턴 https://velog.io/@sillutt/%EB%B9%8C%EB%8D%94-Builder-%ED%8C%A8%ED%84%B4 빌더 (Builder) 패턴 빌더 패턴 velog.io 빌더 패턴 다양한 구성으로 만들어지는 인스턴스에 대해서 동일한 프로세스를 통해 만들 수 있게 도와주는 패턴. 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. Director를 추가하여 빌더를 사용하면 반복되는 호출 스택을 빌더 내에 숨기고 client는 Director를 통해서 객체를 받아 사용할 수 있다. Builder class / interface public interface TourPlanBilder { TourPlanBuilder title (String title); TourPlanBuilder night..
추상 팩토리 (Abstract factory) 패턴 https://velog.io/@sillutt/%EC%B6%94%EC%83%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-Abstract-factory-%ED%8C%A8%ED%84%B4 추상 팩토리 (Abstract factory) 패턴 추상 팩토리 패턴 velog.io 추상 팩토리 (Abstract factory) 패턴 팩토리를 추상화된 형태로 정의하는 패턴. 팩토리를 사용하는 클라이언트에 초점을 맞춘다. 추상 팩토리의 목적은 인스턴스화 하는 코드를 인터페이스 기반으로 하도록 돕기 때문에 모양은 팩토리와 흡사하나 사용하는 코드도 함께 이해해야 한다. public class WhiteshipPartsFactory implements ShipPartsFactory { @Override public..
팩토리 메소드 (Factory method) 패턴 https://velog.io/@sillutt/%ED%8C%A9%ED%86%A0%EB%A6%AC-%EB%A9%94%EC%86%8C%EB%93%9C-Factory-method-%ED%8C%A8%ED%84%B4 팩토리 메소드 (Factory method) 패턴 어떤 객체 및 인스턴스를 생성하는 책임을 추상적인 인터페이스의 메소드로 감싸는 패턴이다. velog.io 팩토리 메소드 (Factory method) 패턴? 어떤 객체 및 인스턴스를 생성하는 책임을 추상적인 인터페이스의 메소드로 감싸는 패턴이다. 구체화한 클래스에 모든 코드를 넣는 작업은 복잡하기 때문에 팩토리 패턴을 사용한다. 팩토리 역할을 할 인터페이스를 만들고 메소드들을 정의한다. 이 중 일부를 하위 클래스에서 구체적인 인스턴스를 만들게 된다. ..
싱글톤(Singleton) 패턴 https://velog.io/@sillutt/%EC%8B%B1%EA%B8%80%ED%86%A4Singleton-%ED%8C%A8%ED%84%B4 싱글톤(Singleton) 패턴 Singleton 패턴 velog.io Singleton 개념 Singleton이란? 인스턴스를 한개만 제공하는 클래스 만들어진 1개의 인스턴스에 글로벌하게 접근할 수 있는 방법이 필요함 -> 오직 1개만 존재해야하는 경우 (설정 화면, 메뉴 등) Code Example public class App { public static void main(String[] args) { Settings settings1 = new Settings(); Settings settings2 = new Settings(); //true Syste..
[Java] Volatile volatile 자바 코드의 변수를 메인 메모리에 저장할 것을 명시하기 위해 사용한다. 모든 volatile 변수는 컴퓨터 메인 메모리로부터 읽히고, 쓰기 작업 또한 메인 메모리로 직접 이루어진다. 따라서 CPU 캐시를 사용하지 않는다. volatile 사용해서 가시성을 보장한다. 가시성 보장 volatile 키워드가 없다면 멀티 스레드 환경에서 자원에 접근할 때 변수가 언제 cpu 캐시에서 메모리로 쓰일 지 보장할 수 없다. 즉, 캐시와 메모리 상의 변수가 서로 다른 값이 될 수 있는 것이다. 이처럼 다른 스레드가 변경한 값을 볼 수 없는 상태를 가시성 이라고 한다. > 정리 volatile 키워드를 사용하면 메인 메모리에서 직접 쓰기 때문에 일관성이 보장된다. 단점 경쟁 상태 멀티스레드 환경에서 vo..
[Programmers][Java] 소수 만들기 https://programmers.co.kr/learn/courses/30/lessons/12977?language=java 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 배열 내의 숫자를 임의로 3개를 뽑아 소수가 되는지 확인하는 작업이다. (중복 허용하지 않음) 따라서 이 문제를 배열 내 숫자 중 3개를 조합으로 뽑고, 소수를 판별하는 부분으로 나누어 풀었다. package com.company; import java.lang.reflect.Array; import java.util..

LIST