Book/Effective Java

    [Book] ITEM 4) private 생성자로 noninstantiability를 강제할 것

    모든 클래스들이 인스턴스화가 필요한 것이 아닙니다. static 메서드와 static 필드들을 담은 클래스들을 인스턴스화를 시키지 않아도 기능들을 사용 할 수 있는데 굳이 인스턴스화를 시킬 필요는 없다고 봅니다. 역직렬화 기능을 담은 클래스가 있다고 가정해봅시다. public class ObjectDeSerialization{ private static ByteArrayInputStream byteArrayInputStream; private static ObjectInputStream objectInputStream; public static byte[]makeByteDecodeArray(String encodeObject) { return Base64.getDecoder().decode(encodeO..

    [Book] ITEM 3) private 생성자 또는 enum 타입을 사용해서 싱글톤으로 만들것

    오직 하나의 인스턴스만 만드는 클래스를 싱글톤이라 말합니다. 싱글톤 패턴을 생성하는 2가지 방법이 있는데 두 방법 모두 생성자를 private 으로 만들고 public static 멤버를 사용해서 유일한 인스턴스를 제공한다. 🟠 public static final 필드 첫번째 방법은 static final 필드로 인스턴스를 생성합니다. static 필드는 메모리에 올라갈 때 인스턴스를 단 한번만 생성해주는 장점이 있고 인스턴스가 여러번 생성이 되도 인스턴스는 동일한 객체입니다. public class Singleton { public static final Singleton singleton = new Singleton(); private Singleton() {} } 테스트 코드를 이용하여 동일한 객체..

    [Book] ITEM 2) 생성자의 매개변수가 많다면 빌더를 고려하라

    static 팩토리 메서드와 public 생성자 모두 매개변수가 많이 필요로 한 경우에 불편한점이 있고, 객체를 생성할 때 파라미터 값을 주는데 이러한 파라미터의 값들이 무슨의미인지 잘 모르는 경우가 많고 복잡한 문제점이 생긴다. // 필드값이 어떤 의미지?? Pet pet = new Pet(1L, "스폰지밥", "1월", "고둥길", 1D); 🔴 try 1 : 생성자 생성하고 싶은 필드들을 생성자를 사용하여 인스턴스를 만들 수 있다. 나는 이름과 주소만 받아서 생성할 꺼야! // 필수 필드의 파라미터 public Pet(String name, String address) { this.name = name; this.address = address; } 하지만 이러한 설정은 name 과 adress 만 ..

    [Book] ITEM 1) 생성자 대신 정적 (static) 팩토리 메서드를 고려해 볼 것

    [Book] ITEM 1) 생성자 대신 정적 (static) 팩토리 메서드를 고려해 볼 것

    학습 목표 장점과 단점을 이해 하는 것이 목표입니다. 장점 🔴 이름을 가질 수 있다. 생성자에서 제공하는 파라미터가 주입을 받을 시점에 무슨 의미인 데이터인지 클라이언트에서는 알기가 어려운 부분이 있는데 이때 우리는 정적 팩토리 메서드를 고려해 볼 만합니다. person 이라는 클래스에 name 과 nickName 을 정의 하고 생성자를 만듭니다. 객체를 생성하여 파라미터를 받아봅시다. 스폰지밥과 스폰지가 파라미터로 받아오는데 어떤 의미가 있는지 명확하게 알 수 가 없다. 이때 사용하는 것이 정적 팩토리 메서드이다. 정적 팩토리 메서드는 이름을 가질 수 있고 그 이름으로 의미상 추론을 할 수 있다. 이 메시지는 이름을 원하다라는 의미를 갖고있다. person 이라는 객체를 생성 후 파라미터를 받을 때 ..