JAVA/Effective Java(2)
-
Effective Java - 생성자 대신 정적 팩토리 메서드를 고려하라
첫 번째, 이름을 가질 수 있다. MemberV1 클래스는 name, email, password 를 필드로 가진다.만약 name, email 만을 입력받아 객체를 생성하는 경우, email 과 password 만을 입력받아 객체를 생성하는 경우 기존 생성자 방식으로는 메소드 시그니처가 중복되기 때문에 구현이 불가능하다. (MemberV1(String, String)) 정적 팩토리 메서드를 사용하면 다음과 같이 구현할 수 있다. 기본 생성자는 클라이언트에서 잘못 사용되지 않도록 public -> private 으로 변경하여 MemberV2 내부에서만 사용하도록 수정한다. createMemberV2WithNameAndEmail 과 createMemberV2WithEmailAndPassword 라는 정적 ..
2025.02.02 -
Effective Java - 클래스와 멤버의 접근 권한을 최소화하라
Item 15. 클래스와 멤버의 접근 권한을 최소화하라// 보안 허점이 숨어 있다.public static final Thing[] VALUES = { ... }; final 키워드는 참조 타입에서 사용시 참조된 객체를 재할당하는 것은 불가능하지만 참조된 객체의 내부 요소까지 보호하지는 않는다. 즉 다음과 같은 문제가 발생할 수 있다.// 참조된 객체 내부 요소를 수정할 수 있다.VALUES[0] = new Thing(); 이를 해결하기 위해서는 두 가지 해결책이 존재한다.첫 번째 방법은 public 배열을 private 으로 변경하고 public 불변 리스트를 추가한다.private static final Thing[] PRIVATE_VALUES = { ... };public static final L..
2025.02.01