본문 바로가기
  • soobinhand의 기술 블로그
728x90

soobinhand119

아이템 4 - 인스턴스화를 막으려거든 private 생성자를 사용하라. 하위 클래스를 만들어 인스턴스화하면 그만이기 때문에 추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다. 컴파일러가 기본 생성자를 만드는 경우는 오직 명시된 생성자가 없을 때 뿐이니 private 생성자를 추가하면 클래스의 인스턴스화를 막을 수 있다. 이렇게 하면 하위 클래스가 상위 클래스의 생성자에 접근할 길이 막혀버린다. 관련 코드 https://github.com/Soobinhand/effective_java/tree/master/src/Item_4 GitHub - Soobinhand/effective_java: 이펙티브 자바 이펙티브 자바. Contribute to Soobinhand/effective_java development by creating an account on GitHub... 2022. 1. 26.
[네트워크] GET과 POST 차이 우선 둘 다 HTTP 메소드로 클라이언트에서 서버로 무언가를 요청할 때 사용된다. GET 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메소드다. 예를 들면 게시판의 게시물 조회. GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며 이 부분이 쿼리 스트링이다. 방식은 URL 끝에 ? 를 붙이고 그 다음 형식에 맞게 이어 붙이면 된다. www.soobinhand.com/show?name = value 이런 형식이다. GET 요청은 캐시가 가능하다. GET은 브라우저 기록에 남음. 북마크 추가 가능. 데이터 길이에 제한. 멱등법칙이 성립함. POST 리소스를 생성 및 수정하기 위해 서버에 데이터를 보내는 데 사용함. 보안이 GET보다는 좋음. GET과 달리 전송해야할.. 2022. 1. 25.
아이템 3 - private 생성자나 열거 타입으로 싱글턴임을 보증하라. 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 싱글턴을 만드는 방식은 보통 둘 중 하나다. 두 방식 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련한다. 가장 바람직한 방법은 열거 타입 방식의 싱글턴이다. public 필드 방식과 비슷하지만, 더 간결하고, 추가 노력 없이 직렬화가 가능하고 심지어 아주 복잡한 직렬화 상황이나 리플렉션 공격에서도 제2의 인스턴스가 생기는 일을 완벽히 막아준다. 대부분 상황에서는 원소가 하나뿐인 열거 타입이 싱글턴을 만드는 가장 좋은 방법이다. 관련 코드 https://github.com/.. 2022. 1. 25.
아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라. 정적 메소드와 생성자는 선택적 매개변수가 많을 경우 적절히 대응하기 어렵다. 점층적 생성자 패턴도 쓸 수는 있지만, 매개변수 갯수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다. 매개변수가 많을 때 활용할 수 있는 두 번째 대안은 자바빈즈 패턴이다. 매개변수가 없는 생성자로 객체를 만든 후, 세터 메서드들을 호출해 원하는 매개변수의 값을 설정하는 방식이다. 점층적 생성자 패턴의 단점들이 자바빈즈 패턴에서는 더 이상 보이지 않는다. 코드가 길어지긴 했지만 인스턴스를 만들기 쉽고, 그 결과 더 읽기 쉬운 코드가 되었다. 하지만 자바빈즈는 심각한 단점이 있음. 자바빈즈 패턴에서는 객체 하나를 만들려면 메서드를 여러 개 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 된다. .. 2022. 1. 25.
728x90