java 15

[JAVA] Builder 패턴

실무에서 Lombok에서 @Builder 어노테이션으로 많이 사용하나, 정확한 개념을 알기위해 기록 정의 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 빌더 패턴 사용해야할 경우 생성자에 인자가 많을 경우 생성자에 매개변수가 많은 경우 일반적으로 Model로 사용하는 클래스에서는 흔히 사용하는게 자바빈 패턴 혹은 점층적 생성자 패턴을 사용하나 이러한 경우, 가독성이 좋지 않아 실수하는 경우가 생길 수가 있음, 특히 자바빈패턴 같은경우 setter사용으로 인해 불변객체로 만들 수가 없음 (아래 예시 참조) 점층적 생성자 패턴 /* 점층적 생성자 패턴 */ public class Us..

JAVA 2021.05.16

[DevOps] 리눅스 JAVA 설치

매번 까먹어서 적음 (JDK 1.8 설치 진행) 사전 준비 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html에서 JDK 다운로드 (직접업로드하거나, wget을 통하여 설치) 설치 진행 1. 파일 설치 1. tar -xvf jdk-8u291-linux-x64.tar.gz (압축 해제) 2. mv jdk1.8.0_291 /usr/local (파일 이동) 3. cd /usr/local (해당 경로 이동 확인) 4. ln -s jdk1.8.0_291 java (심볼릭 링크 설정) 2. 환경 변수 1. vi /etc/profile 수정 2. 해당 profile 최하단에 아래내용 추가 #JAVA export JAVA_HOME=/us..

DEVOPS 2021.05.16

[JAVA] 상속 / 컴포지션

상속 부모클래스에서 정의된 필드와 메소드를 자식이 물려받는 것 자식클래스에서 extends를 선언하여 상속을 받을 수 있으며, 부모클래스는 하나만 정의가 가능 객체지향프로그래밍의 특징인 캡슐화를 깨뜨림, 부모클래스의 정의가 변경되면, 하위클래스도 변경하기 때문 캡슐화를 깨뜨리는 단점때문에 왠만한 상황에서는 컴포지션으로 푸는 것이 좋음 (오류낼 가능성 있음) 컴포지션 private 필드를 통하여 기존의 클래스가 새로운 클래스의 구성요소(인스턴스로)로 쓰이는 것 새로운 클래스에 기존 클래스의 영향이 적어, 기존 클래스가 변경되어도 안전함 (변화에 유연함) 예시 /* 부모클래스 */ public class Notebook { public void on() { System.out.println("전원동작"); ..

JAVA 2021.05.15

[JAVA] static 정리

static 선언 메모리에 한번 할당되어 프로그램이 종료될 때 해제 static 키워드를 붙이면 자바는 메모리 할당을 딱 한번만 하게 되어서 메모리 사용에 이점 Heap영역이 아닌 static영역에 할당되어 GC 관리 영역 밖이라 자주 사용하면 퍼포먼스에 영향을 줌 static으로 설정하면 같은 곳의 메모리 주소만 바라보기 때문에 static 변수의 값을 공유하게 됨 static 변수 클래스 변수, 객체를 생성하지 않고 접근 가능 함 static 메소드 객체의 생성 없이 호출이 가능함 예시 public class Book { /* static 변수 */ public static String BOOK_NAME = "STATIC BOOK"; public String book = "BOOK"; /* stati..

JAVA 2021.05.15

[JAVA] Lombok @Delegate

Lombok에 Delegate 어노테이션을 잘몰라서 기록 @Delegate 한 객체의 메소드를 다른 객체로 위임 시켜줌 예시 @NoArgsConstructor @Getter public class Member { private String name; private String email; } @Getter public class Report { @Delegate private List memberList; } public class Main { public static void main(String[] args) { Report report = new Report(); /* add 메소드가 위임되어서 바로 호출이 가능 */ report.add(new Member()); report.getMemberLis..

JAVA 2021.04.18