본문 바로가기

Back-End/Java20

생성자에 매개변수가 많다면 빌더를 고려하라 | Builder pattern, Lombok @builder Builder pattern 빌더 패턴은 "복잡한 객체의 구성과 그 표현을 분리하여 동일한 구성 과정이 서로 다른 표현을 만들 수 있도록 하는 것"을 목표로 한다. 복잡한 개체를 단계별로 구성하는 데 사용되며, 마지막에는 개체를 반환한다. 생성자에 대한 매개변수가 축소되고, 가독성이 높은 메서드 호출로 제공된다. 때문에 선택적 매개변수에 대해 null을 전달할 필요가 없다. 객체는 완전한 상태로 인스턴스화되며, 불변 객체는 복잡한 논리 없이 구축될 수 있다. 코드 라인 수는 두 배 이상으로 증가하지만, 가독성 있는 코드를 작성할 수 있다. 유용한 예시 Member 클래스가 있다고 가정하자. name, age, email, phone 필드를 갖고 아래의 특성을 갖는다. 한 번 생성되면 읽기만 가능해야 한다.. 2022. 10. 15.
[Design Pattern] 디자인 패턴의 정의와 종류 소프트웨어 디자인 패턴 디자인 패턴이란 특정 문제(혹은 작업)를 해결하기 위한 잘 입증된 솔루션이다. 소프트웨어 개발 과정에서 발견한 지식과 경험을 통해 재사용 할 수 있는 형태로 규약을 만들어서 정리된 것이다. 디자인 패턴을 사용하면 코드를 유연하고 효율적이게 유지보수 할 수 있다. 아래의 23가지 디자인 패턴을 GoF(Gang of Four) 디자인 패턴이라고 한다. 🎨 Creational Design Pattern 생성 패턴은 객체를 만드는 방식과 관련이 있다. 객체를 생성하는 방법에는 new 키워드를 이용하는 방법이 있지만 프로그램의 특성에 따라 구조를 변경할 경우에 유연성을 제공하지 않기 때문에 좋은 방법이 아니다. Factory Pattern Abstract Factory Pattern Sin.. 2022. 9. 25.
Optional이란? Class Optional null일 수도 있는 값을 감싸는 Wrapper 클래스이다. 코드를 작성하다보면 빈번하게 볼 수 있는 NPE(NullPointerException)을 방지할 수 있다. Optional optional = Optional.ofNullable(getName()); String name = optional.orElse("Hello!"); // 값이 없다면 'Hello!' 리턴 //값이 존재하면 로직을 함수형 인자로 넘긴다 Optional.ofNullable(member.getName()) .ifPresent(name -> findMember.setName(name)); boolean value = optional.isPresent(); //값이 존재하는가? //값이 존재하면 retu.. 2022. 9. 1.
StringBuilder의 사용, String으로 변환 String 객체는 한 번 생성하면 변경이 불가능하기 때문에 String 객체끼리 더하는 방법은 메모리 할당과 해제를 발생켜서 비효율적이다. StringBuilder를 사용하면 문자열을 자유롭게 연결할 수 있다. StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("문자열").append("연결"); String 타입으로 변환해야 한다면 아래와 같이 toString 메서드를 사용한다. String s = sb.toString(); 2022. 8. 13.
StringifyJSON JSON JavaScript Object Notation 서로 다른 프로그램 사이의 데이터 교환을 위해 사용되는 데이터 타입, 객체 형태의 포맷 자바스크립트을 포함한 많은 언어에서 범용적으로 사용하는 유명한 포맷이다! → 데이터 타입을 재귀를 사용하여 직접 JSON타입으로 변경해 보기! (null, Boolean, String, Array, HashMap) 데이터 전송이 가능한 조건 (transferable condition) 1. 수신자(reciever)와 발신자(sender)가 같은 프로그램을 사용한다. 2. 또는, 문자열처럼 범용적으로 읽을 수 있어야 한다. Map 인스턴스의 참조 변수를 toString() 시도할 경우, Java를 사용하지 않는 프로그램에서는 데이터를 정확히 파악할 수 없다 객체 .. 2022. 7. 22.
스레드(Thread) 스레드란? 싱글 스레드 vs. 멀티 스레드 스레드 생성 방법 두 가지 스레드 실행 스레드 동기화 스레드 상태 이해, 제어 스레드란? 프로세스: 실행 중인 애플리케이션 = 데이터 + 컴퓨터 자원 + 스레드 스레드: 데이터와 애플리케이션이 확보한 자원으로 코드 실행, 이 흐름 메인 스레드(Main thread) 싱글 스레드 프로세스: 메인 스레드만 가진다 멀티 스레드(Multi-Thread) 동시 작업 가능, 여러 코드를 각 스레드에 분배하여 동시에 실행시킬 수 있다! 다수의 클라이언트 요청을 처리하는 서버를 개발할 때 사용 ex) 메신저 애플리케이션: 메시지를 주고받으며 파일 업로드 가능 스레드의 생성과 실행 메인 외 별도의 작업 스레드를 활용한다? = 작업 스레드가 수행할 코드 작성, 생성, 실행 → r.. 2022. 7. 19.