simple Factory
simple로 구현할 경우 if else 로직이 추가될때 마다 else if를 추가해주어야하는 문제가 있다.
factory method 패턴
그렇기 때문에 각각 생성하는 factory를 구현하고 주입만 해주는 방식으로 설계를 한다. 유저가 선택하는 파트는 ui에서 하는 방식이지 객체가 랜덤으로 선택하는 코드는 있을 필요가 없다.
Annotation의 용도
- 컴파일러에게 코드 작성 문법 에러를 체크 하도록 정보를 제공
- 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- Lombok
- 런타임시 특정 기능을 실행 하도록 정보 제공
- AOP 관점지향 프로그래밍
@SuppressWarnings
- 알고 있는 내용으로 경고 필요 없음 즉 컴파일 경고를 무시하도록 합니다.
- all : 모든 경고
- cast : 캐스트 연산자 관련 경고
- dep-ann : 사용하지 말아야 할 주석 관련 경고
- deprecation : 사용하지 말아야 할 메서드 관련 경고
- fallthrough : switch문에서 break 누락 관련 경고
- finally : 반환하지 않는 finally 블럭 관련 경고
- null : null 분석 관련 경고
- rawtypes : 제너릭을 사용하는 클래스 매개 변수가 불특정일 때의 경고
- unchecked : 검증되지 않은 연산자 관련 경고
- unused : 사용하지 않는 코드 관련 경고
@FunctionalInterface
- java에서 함수형 프로그램을 하기 위해서 인터페이스를 일급함수를 만들기 위해서 사용한다.
@Native
- native 메소드에서 참조되는 상수 앞에 붙인다.
Meta Annotation
- Java5에 추가된 기능으로 어노테이션을 선언할 때 사용하는 어노테이션
@Target
- Annotation이 적용가능한 대상을 지정하는데 사용한다.
- 즉 컴파일러가 Annotation을 어디에 적용할지 결정하는 Annotation
- Annotation 적용 위치
- ElementType.PACKAGE : 패키지 선언
- ElementType.TYPE : 타입 선언
- ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
- ElementType.CONSTRUCTOR : 생성자 선언
- ElementType.FIELD : 멤버 변수 선언
- ElementType.LOCAL_VARIABLE : 지역 변수 선언
- ElementType.METHOD : 메서드 선언
- ElementType.PARAMETER : 전달인자 선언
- ElementType.TYPE_PARAMETER : 전달인자 타입 선언
- ElementType.TYPE_USE : 타입 선언
Proxy 패턴
- 대지라 역할, 캐싱 역할 등등 다양하게 활용할 수 있다.
- 일반적으로 proxy 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스 입니다.
Reflection 개념
- java 프로그래이 자체적으로 내부 속성을 조작할 수 있습니다.