카테고리: Language

3. Template Method Pattern

1. Template Method Pattern 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴 2. 언제 사용할까? 구현하려는 알고리즘이 일정한 프로세스가 있다. 구현하려는 알고리즘이 변경가능성이 있다. 3. Process 알고리즘을 여러 단계로 나눈다. 나누어진 알고리즘의 단계를 메소드로

2.Adapter Design Pattern

1. Adapter Pattern 연관성 없는 두 객체를 묶어서 사용한다. 2. 학습 목표 알고리즘을 요구사항에 맞춰 사용할 수 있다. 2.1. 의미 Adapter는 사전적의미로는 기계 기구등을 다목적으로 사용하기 위한 부가 기구라고 할 수 있습니다. 2.2. 기본 설계 2.3. 요구사항 1 두 수에 대한 다음 연산을 수행하는 객체를 만들기 수

1.Strategy Design Pattern

1. 학습목표 Interface Delegate Strategy Pattern 1.1. Interface 키보드나 디스플레이 따위 처럼 사람과 컴퓨터를 연결하는 장치 기능에 대한 선언과 구현을 분리 기능을 사용 통로 기능을 기능의 선언과 기능의 구현을 분리할 수 있는 기능을 제공한다. 1.2. Delegate 특정 객체의 기능을 사용하기 위하여

Java MultiThread(멀티스레드) 고려사항

1. Multi Thread 고려사항 MultiThread를 구현하는 대표적인방법은 두가지가 있습니다. java.lang.Thread 클래스를 상속받아서 구현하는 방법 java.lang.Runnable 인터페이스를 구현해서 개발하는 방법 Field Member 필드의 의미는 클래스에 변수를 정의하는 공간을 의미합니다. 하지만, 객체가 여러 스레드가

Java Wrapper Class, Auto Boxing

1. Wrapper Class Wrapper Class란? 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본

Java 클린코드 매직넘버 이슈 및 final 키워드

1. 매직넘버를 직접 작성하는것을 지양하라 소스코드를 보다보면 특정한 숫자 매직넘버(Magic Number)를 직접 작성하는 나쁜 스타일의 코드를 볼 수 있습니다. 만약에 캐싱으로 캐싱값들을 강제로 업데이트하는 로직이 있다고 가정해보겠습니다. 여기에서 캐시에 대한 시간값을 지정했다고 가정하면 다음과 같이 코드를 작성하는것이 올바른 코드 일까요? 아닙니다.

Effective Java 3/E Item 55 옵셔널반환은 신중히 하라

1. 옵셔널반환은 신중히 하라 자바 8전에는 메서드가 특정조건에서 값을 반환할 수 없을때 취할 수 있는 선택지가 두가지가 있었다. 예외를 던지거나 null을 반환하는것입니다. 예외 예외의 경우는 스택 추적 전체를 캡처하므로 비용이 만만치 않습니다. null 반환 null은 반환하면 이런 문제가 생기지 않지만 null을 반환할 수 있는 메서드를 호출

오버로딩(overloading)과 오버라이딩(overriding), 접근제어자(Access Modifier)

1. 오버라이딩(Overriding) 자바의 경우는 오버라이딩 시 동적바인딩되며 상위 클래스 혹은 인터페이스에 존재하는 메소드를 하위 클래스에서 필요에 맞게 재정의하는 것을 말합니다. 2. 오버로딩(Overloading) 메소드의 이름과 return 타입은 동일하지만, 매개변수만 다른 메소드를 만드는 것을 말합니다. 오버로딩은 다른 시그니쳐를 만들며 정

Java Generic(제네릭)

1. Generic(제네릭)이란? 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듭니다. 타입 안정성을 높인다는 것은 의도 하지 않은 타입의 객체가 저장되는 것을 막고 저장된 객체를 꺼내올 때 원래의 타