# Lambda Expression
- Lambda Expression은 메소드를 하나의 식(expresson)으로 표현할 수 있도록 하여, 함수를 간결하고 명확한 식으로 표현할 수 있게 해주는 Java의 함수형 언어 지원이다.
# Funcational Interface
- 하나의 abstract method를 가지고 있는 인터페이스
- SAM(Single Abstract Method) 인터페이스
- @FunctionalInterface 어노테이션이 적용될 수 있는 Target 인터페이스
- Java에서 함수를 객체처럼 다를 수 있도록 함
@FunctionalInterface
public interface BinaryOp {
public int apply(int left, int right);
}
# 메서드 참조
- Lambda Expression을 단순하게 만들어주는 구문
- Lambda Expression이 단 하나의 메소드만을 호출하는 경우에 사용
- 해당 Lambda Expression에서 불필요한 parameter를 제거하고 사용할 수 있음
- 불필요한 parameter를 제거하고 :: 기호를 사용하여 표현
public interface BinaryOp {
public int apply(int i, int j);
}
class Calc {
public static int add(int i, int j) {
return i + j;
}
public int mult(int i, int j) {
return i * j;
}
}
class Test {
public static void main(String[] args) {
BinaryOp adder = Calc::add;
BinaryOp multer = new Calc()::mult;
System.out.println(adder.apply(1, 2));
System.out.println(multer.apply(2, 3));
}
}
메소드 참조(Method Reference)는 Lambda Expression이 단 하나의 메소드만을 호출하는 경우에 해당 Lambda Expression에서 불필요한 parameter를 제거하고 사용할 수 있도록 해 준다.
메소드 참조를 사용하면 불필요한 파라미터를 제거하고 :: 를 사용하여 표현할 수 있다.
# Annotation
- 프로그램을 구성하는 직접적인 코드가 아님
- 프로그램 작성에 도움을 주거나 이에 필요한 기능을 제공
- 컴파일러에 기능 제공
- 도구 확장 기능
- 실시간 처리
- 관점 지향 프로그래밍(AOP)의 Java 구현
일반적인 어노테이션 사용
JavaDoc을 사용하여 프로그램을 설명하는 HTML 문서를 만들기 위해 주석을 사용한다. JavaDoc에서는 설명이 필요한 변수, 메소드, 클래스 등의 요소에 '/**' 으로 시작하는 여러 줄 주석을 표시하고, 주석에 어노테이션을 추가하여 응용 프로그램을 추가하여 응용 프로그램을 설명하는 HTML 문서를 생성하여 공유할 수 있다.
/**
* @author NHN Academy
* @version 1.0 2022-03-01
*/
public class Hello {
/**
* @param args 프로그램이 실행될 때 주어지는 인자값이 포함된 배열
*/
public static void main(String args[]) {
System.out.println("Hello, Worlds!");
}
}
# 디자인 패턴
## 디자인 패턴의 요소
### 구조 패턴
- 어댑터(Adapter) 패턴
- 브리지(Bridge) 패턴
- 컴포지트(Composit) 패턴
- 데코데레이터(Decorator) 패턴
- 퍼사드(Façade) 패턴
- 플라이웨이트(Flyweight) 패턴
- 프록시(Proxy) 패턴
### 행위 패턴
- 책임 체인(Chain of Responsibility) 패턴
- 커맨드(Command) 패턴
- 인터프리터(Interpreter) 패턴
- 반복자(Iterator) 패턴
- 중재자(Mediator) 패턴
- 메멘토(Memento) 패턴
- 상태(State) 패턴
- 전략(Strategy) 패턴
- 템플릿 메소드(Template Method) 패턴
- 비지터(Visitor) 패턴
### 생성 패턴
- 추상 팩토리
- 빌더
- 팩토리 메서드
- 프로토타입
- 싱글턴
## 싱글턴 패턴
- 이름
- 싱글턴(Singleton) 패턴
- 문제
- 어떤 클래스의 경우 정확히 하나의 인스턴스만을 가지게 하는 것이 중요하다 (예: 프린터 스풀)
- 클래스의 인스턴스를 하나만 만들고, 이 인스턴스에 쉽게 접근할 수 있도록 만들 수 있어야 한다.
- 해법
- 클래스 자체가 자신의 유일한 인스턴스로의 접근을 자체적으로 관리하도록 설계한다. 이 클래스는 자신 말고는 다른 인스턴스가 생성될 수 없음을 보증할 수 있고, 클래스 자체가 인스턴스에 대한 접근 방식을 제공하도록 할 수 있다.
- 활용
- 클래스의 인스턴스가 오직 하나임을 보장하며, 정의된 접근 방식에 의해서만 접근해야 할 때
- 유일하게 존재하는 인스턴스가 상속에 의해 확장되어야 할 때
- 구조

'CNU SW 아카데미 > 2주차' 카테고리의 다른 글
[자바 프로그래밍] 디자인 패턴 심화 (0) | 2024.07.12 |
---|---|
[자바 프로그래밍] 제네릭 (1) | 2024.07.10 |
[자바 프로그래밍] 클래스 (1) | 2024.07.09 |
[자바 프로그래밍] 값 타입 vs 참조 타입 (1) | 2024.07.08 |