목록스터디 (23)
영권's
Command 패턴 명령 패턴은 요청을 요청에 대한 모든 정보를 포함하는 "독립 실행형 개체"로 변환하는 동작 설계 패턴입니다. 예를 들어 클래스가 일을 할때는 자신의 클래스나 다른 클래스의 메서드를 호출합니다. 메서드를 호출한 결과는 객체의 상태에 반영이 되지만, 일의 이력은 남지 않습니다. 이때 '이 일을 실행하시오'라는 '명령'을 표현하는 클래스가 있으면 편리합니다. 실행하고 싶은 일을 '메서드를 호출'하는 동적인 처리로 표현하는 것이 아니라, 명령을 나타내는 클래스의 인스턴스로 하나의 '물건'처럼 표현할 수 있기 때문입니다. 이력을 관리하고 싶을때에는 그 인스턴스의 집합을 관리하면 됩니다. 명령의 집합을 저장해 두면 같은 명령을 재실행할 수도 있고, 또는 복수의 명령을 모아서 새로운 명령으로 재이..
Chain of Responsibility - 책임 사슬 Chain of Responsibility란 책임 떠넘기기와 같은 의미입니다. 어떤 요청이 발생했을 때 그 요청을 처리할 오브젝트를 직접 결정할 수 없는 경우, 복수의 오브젝트(객체)를 사슬(chain)처럼 연결해 두면, 그 오브젝트(객체)의 사슬을 차례로 돌아다니면서 목적한 오브젝트(객체)를 결정하는 방법을 생각할 수 있습니다. 이와 같은 패턴을 Chain of Responsbility라고 합니다. 책임을 떠넘기는 구조를 생각하면 이해하기 쉽습니다. 이떤 사람에게 요구를 합니다. 그 사람이 그것을 처리할 수 있으면 처리하고, 처리할 수 없으면 그 요구를 '다음 사람'에게 넘깁니다. 다음 사람이 그 요구를 처리할 수 있으면 처리 하고, 처리할 수 ..
목표 자바의 람다식에 대해 학습하세요. 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식(Lambda expression)이란? 람다식은 간단히 말해서 메서드를 하나의 '식(expression)'으로 표현한 것이다. 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해준다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)이라고도 한다. 예) int arr[] = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); 여기서 (i) -> (int)(Math.random()*5)+1) 이 바로 람다식이..
목표 자바의 제네릭에 대해 학습하세요. 학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭이란? 데이터 타입을 일반화 하는 것을 의미한다. 제네릭은 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시 type check를 하면 장점이 있다. 클래스나 메서드 내부에서 사용되는 객체 타입의 안정성을 높일 수 있다. 반환 값에 대한 타입 변환 검사에 들어가는 노력을 줄일 수 있다. Java5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메서드에서 인수나 반환값으로 Object타입을 사용했었다. 하지만 이 경우 반환된 Object 객체를 다시 원하는 타입으로 타입을 변환해야하고, 이..
목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 I/O 입출력 입출력이란? 입출력(I/O)란 Input과 Output의 약자로 입력과 출력, 간단히 입출력이라 한다. 입출력은 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 키보드로부터 데이터를 입력 System.out.println()을 이용해 화면에 출력 스트림(stream) 자바에서 어느 한 쪽에서 다른 쪽으로 데이터를 전달하려면, ..
목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 어노테이션(Annotation) 사전적 의미로 주석을 의미하며 프로그램에 대한 데이터를 제공하는 메타데이터의 한 형태 입니다. 어노테이션과 일반적인 주석은 뭐가 다른걸까? - 어노테이션의 역할도 주석과 크게 다르지 않는다. - 일반주석과 큰 차이점은 코드를 작성할 수 있다는 것이 다르다. - 코드를 작성할 수 있다는 뜻은 어노테이션으로 뭔가를 할 수 있다는 뜻이 된다. - 어노테이션도 enum과 마찬가지로 1.5에 등장했다고 한다. 메타 데이터(metadata) : 데이터에 대한 데이터. 즉, 다른 데이터를 설명해주는 데이터입니다. 애노테이션의..