본문 바로가기
반응형

Java10

[이펙티브 자바] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩터리, 생성자는 선택적 매개변수가 많을 때 대응하기 어려운 문제가 있다. 이때, 점층적 생성자 패턴을 사용할 수 있다. 점층적 생성자 패턴 쉽게 말해서 매개변수 마다 생성자를 늘려가는 방식이다. (매개변수 1개 생성자, 매개변수 2개 생성자...) 하지만 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기가 어렵다는 단점이 있다. 각 값의 의미 파악이 어려움 매개변수가 몇 개인지 파악해야함 타입이 같은 매개변수가 있으면 버그가 발생할 때 찾기 어려움 실수로 매개변수 순서를 바꿔도 버그가 발생할 수 있음 자바빈즈 패턴 (JavaBeans pattern) 점층적 생성자 패턴의 대안으로, 매개변수가 많을 때 자바빈즈 패턴을 사용할 수 있다. 매개변수가 없는 생성자로 객체를 생성 후, setter.. 2021. 5. 25.
[이펙티브 자바] 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라 시작하기 전에 이펙티브 자바의 저자는 '조슈아 블로크'이다. 처음에는 누군지 몰랐는데 검색해보니 자바의 어머니라고 불리는 어마어마한 분이셨다. (물론 여자는 아니심... 자바의 아버지가 제임스 고슬링이라 그렇게 지은듯?) (우리가 흔히 사용하는 Override 어노테이션의 author에서도 조슈아 블로크를 볼 수 있다.) 여튼,, 자바 개발자라면 꼭 읽어봐야 할 필독서로 책의 난이도가 있다는 말을 주변에서 들었는데 천천히 꾸준하게 읽어보려한다. 책을 보고도 잘 와 닿지 않는 부분이 있어, 직접 코드를 작성하면서 이해하려고 함. 인스턴스를 생성하는 방법 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 2가지가 있다. public 생성자 static factory method (정적 팩토.. 2021. 1. 23.
JVM (Java Virtual Machine) JVM에 대해서 아시나요? JVM이란 Java로 개발한 프로그램을 실행하기 위한 가상머신입니다. 운영체제 위에서 동작하므로 플랫폼에 독립적으로 Java 프로그램을 실행시킬 수 있습니다. 자바 프로그램 실행과정 (그림 출처 : https://medium.com/@lazysoul/jvm-%EC%9D%B4%EB%9E%80-c142b01571f2) 프로그램이 실행되면 JVM은 OS로부터 해당 프로그램이 필요로하는 메모리를 할당받습니다. JVM은 할당 받은 메모리를 용도에 따라 여러 영역으로 나누어 관리합니다. 자바 컴파일러(javac)가 자바 코드(.java)를 읽어 자바 바이트코드(.class)로 변환시킵니다. 클래스 로더는 class파일들을 JVM으로 로딩합니다. 로딩된 class파일들은 실행 엔진(Exec.. 2019. 6. 26.
팩토리 메서드 팩토리란 ? 팩토리(Factory) 는 '공장' 이라는 뜻을 가지고 있다.일반적으로 클래스의 객체를 생성할 때, 생성자 를 통해서 객체를 생성하지만 팩토리 메서드 라는 공장을 통해서 객체를 만들 수도 있다. 그럼, 팩토리 메서드를 사용한 것과 생성자를 사용한 것이 무슨 차이가 있는 것 인가요?굳이 팩토리 메서드를 만들어서 인스턴스를 생성하는 번거로운 작업을 왜 해? 이것에 대한 답변을 들어보기 전에, 여러분들도 한 번 고민해 보자 팩토리 메서드 public class Person{ private int age; Person(int age){ this.age = age; } } 이것은 우리가 자바 기본서에서 지겹도록 봐왔던 클래스 구조다. Person p = new Person(10); 그리고 우리는 객체.. 2018. 10. 17.