728x90 반응형 Programming222 [EffectiveJava] Item17 변경 가능성을 최소하라 불변클래스란(Immutable Class) ? 해당 객체의 내부적인 값들을 변경할 수 없는 클래스를 의미한다. 불변 클래스는 해당 객체가 파괴되는 순간까지 절대 달라지지 않는다. 불변 클래스는 가변 클래스보다 설계하고 구현하기 쉽고, 사이드 이펙트로부터 안전하다. 클래스를 불변으로 만드는데 필요한 5가지 규칙이 있다. 1. 객체의 상태를 변경하는 메서드를 제공하지 않는데. 2. 클래스를 확장할 수 없도록 한다.(class 에 final 선언, 다른방법도 있음) 3. 모든 필드들을 final 로 선언한다. 4. 모든 필드들을 private 접근제한자로 선언한다. 5. 자신 외에는 내부의 가변 컴포넌트에 접근할 수 없도록 한다. public final class Calculator { private fina.. 2021. 1. 6. [EffectiveJava] Item16 public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 예시 코드를 하나 보도록 하겠습니다. class Point { public double x; public double y; } 위와 같은 class는 public이기 때문에 데이터 필드에 직접 접근할 수 있기 때문에 캡슐화의 이점을 제대로 살리지 못한다. 위와 같은 class는 불변성을 보장할 수 없고, 외부에서 접근할 때 부수 작업을 수행할 수도 없습니다. (변경후 데이터 처리를 부수작업이라고 보시는게 편합니다.) 위와 같은 문제를 해결하기 위해 Setter/Getter를 통해 내부 필드에 접근할때 접근자 메서드를 사용하여 접근하도록 하는방법입니다. 위의 코드를 접근자 메서드를 활용하여 작성하면 다음과 같습니다. class Point { private double x; // publid 을 privat.. 2021. 1. 2. :) HTTP란 - (2) :) HTTP 트랜잭션 HTTP 트랜잭션은 요청(클라이언트에서 서버로 전송)과 응답(서버에서 클라이언트로 전송)으로 이루어져 구성되어있다. 해당 트랜잭션은 위의 그림과 같이 HTTP메세지라고 불리는 정형화된 데이터를 통해 이루어진다. :) 메서드 (Method) HTTP 메서드는 여러 가지 종류의 요청 명령을 지원한다. 모든 HTTP 요청에는 반드시 한 개의 메서드를 갖는다. 메서드는 클라이언트에서 서버에게 어떤 동작을 취해야 하는지 알려준다. HTTP 메서드는 다양하지만 가장 많이 사용되는 5가지 메서드에 대해서 알아보도록 하겠습니다. GET - 서버에서 클라이언트에게 클라이언트가 요청한 리소스를 줘라. POST - 클라이언트에 있는 데이터를 서버에 전송할 할테니 저장해줘.. PUT - 클라이언트에 있.. 2020. 12. 28. [EffectiveJava] Item15 클래스와 멤버의 접근권한을 최소화하라 앞으로 나오는 package-private은 접근제한자 default와 동일하다고 본다. 잘 설계된 컴포넌트와 잘 설계하지 못한 컴포넌트는 내부 데이터를 외부에 얼마나 잘 숨겼는가만 봐도 알 수 있다. 잘설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨 구현과 API를 깔끔하게 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통하고 내부 동작의 방식에는 전혀 개의치 않는다. 가장 중요한 내용은 정보은닉 또는 캡슐화라고 우리가 흔히 부르는 내용이다. :) 정보은닉 ( 캡슐화 ) 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 각 컴포넌트를 빠르게 파악하여 디버깅 가능, 다른 컴포넌트로 교체하는데 부담도 적다. 정보 은닉이 성능을 높여주는 않지만, 성능의 최적화에는 도움이 된.. 2020. 12. 27. 이전 1 ··· 3 4 5 6 7 8 9 ··· 56 다음 728x90 반응형