190517
컴포넌트 :

큰 구성요소들. ex)오디오 컴포넌트 등..

캐싱 :

한 번 만들어서 있는 걸 재활용하는 것. ex)싱글턴패턴.

p9. 하나의 시그니처로는 생성자를 하나만 만들 수 있다. 입력매개변수들의 순서를 다르게 한 생성자를 새로 추가하는 식으로..

생성자가 여러 개면, 개발자가 어떤 생성자를 호출해야할지 혼동해서 엉뚱한 생성자를 호출할 수도 있다. 따라서 생성자를 대신해 이름을 지어줄 수 있는 정적 팩터리 메서드를 고려하자.

p11 리턴하는 객체의 클래스가 public static 팩토리 메소드를 작성할 시점에 반드시 존재하지 않아도 된다.

추상클래스(다형성)을 생각하자. 리턴타입 객체의 클래스가 정해지는 것은 자손에서 결정한다.

p19 계층적으로 설계된 클래스

상속관계로 이루어진 클래스.(람다 & 스트림에서 자세히 알게될 것.)

p24. 직렬화.

객체의 저장방법. 객체는 iv의 집합이다.

p29. 의존 객체 주입은 유연성과 테스트 용이성을 높여준다.

public class SpellChecker{
    private final Lexicon dictionary;

    public SpellChecker(Lexicon dictionary){
        this.dictionary = Objects.requireNonNull(dictionary);
    }
    public boolean isValid(String word){ ... }
    public List<String> suggestions(String typo) { ... }
}

상황에 따라 필요한 자원을 생성자 매개변수의 다형성을 이용해서 넣어주는 것(의존객체주입의 한 방법.)

p34 객체풀

객체들을 모아둔 것. 볼풀장 생각하자. ex) 객체 배열 등.

p37 가비지컬렉터가 회수하지 않는다.

가비지컬렉터는 객체를 참조하는 변수의 유무로 회수여부를 결정한다.

p78 생성자 연쇄.

생성자 안에서 다른 생성자를 호출하는 것 ( this() )