본문 바로가기
728x90

Gayoung162

item 15. 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트란? 클래스 내부 데이터와 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐에 달린다. 오직 API를 통해서 외부 컴포넌트와 소통한다. "캡슐화" [ 캡슐화 / 정보 은닉의 장점 ] 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발 가능 시스템 관리 비용을 낮춘다. 각 컴포넌트별 디버깅 속도가 빠르다. 컴포넌트 교체 부담이 적다. 성능 최적화에 도움을 준다. 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화가 가능하다. 소프트웨어 재사용성을 높인다. 외부에 거의 의존하지 않고 독자적으로 동작할 수 있는 컴포넌트일 경우. 큰 시스템 제작 난이도를 낮춰준다. 시스템이 완성되지 않은 상태라도 개별 컴포넌트 동작 검증이 가능하기 때문이다. [ 자바에서 제공하는 정보 은닉 장치 .. 2022. 4. 23.
item 14. Comparable을 구현할지 고려하라 [ compare to ] - Comparable 인터페이스의 유일무이한 메서드 - Object 메서드가 아니다! - 단순 동치성 뿐만 아니라, 순서까지 비교할 수 있다. (즉, Comparable을 구현한 클래스의 인스턴스는 자연적 순서가 생긴다.) Comparable을 구현한 객체의 정렬 방법 : Arrays.sort(객) - 자바 플랫폼 라이브러리의 모든 값 클래스와 열거 타입이 Comparable을 구현했다. - 순서가 명확한 값 클래스를 작성한다면 Comparable interface를 구현해야 한다. [ 일반 규약 ] 해당 객체와 주어진 객체의 순서를 비교한다. 객체가 매개변수로 들어온 객체보다 작으면 음의 정수(-1), 같으면(0), 크다면 양의 정수(+1)을 반환 객체와 매개변수로 들어온 .. 2022. 4. 23.
item 13. clone 재정의는 주의해서 진행하라 Cloneable 복제해도 되는 클래스임을 명시하는 용도의 mix-in interface. clone() 한마디로 말하면 복제하는 메소드 이다. 그러나, 모든 클래스가 clone() 메서드를 사용할 수 있는 것이 아니다. 왜? -> clone() 메서드가 선언된 곳은 Object고 접근 제한자는 protected이지만, clone()은 Clonealbe 인터페이스의 추상 메소드이기 때문. 따라서, Cloneable을 구헌하는 것 만으로는 clone()을 호출할 수 없다. //clone() 자동생성method @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } Cloneable Interf.. 2022. 4. 23.
[spring] Web MVC [자주 사용했던 Annotation] @WebMVC @Controller @RequestMapping - class level & method level get, post다 사용할 수 있고 해당 방법으로 고정해 사용하면 된다. @GetMapping @PostMapping @RequestParam @ModelAttribute DTO를 자동으로 만들고 전달받은 파라미터를 DTO에 준다. @CookieValue 쿠키 값을 주입받아 쓸 수 있음. 실습해보기! - 준비 1. pom.xml 2. log4j2.xml - java contig 기반으로 변경 1. root-context.xml, servlet-context.xml 변경 - 기존 빈들을 가져오고 적절한 곳에서 scan하기 - 기본 페이지 동작 확인 - w.. 2022. 4. 21.
item 12. toString을 항상 재정의하라 toString [규약] 모든 하위 클래스에서 이 메서드를 재정의한다. 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환한다. [기본 메서드] - 기본적으로 class_Name@16진수로_표시한_hashCode 반환. (간결하고 읽기 쉽지만, 상대적으로 덜 유익하다.) - 객체를 println, printf, 문자열 연결 연산자(+), assert 구문에 넘길 때, 혹은 디버거가 객체를 출력할 때 자동으로 불린다. - 즉, 직접 호출하지 않더라도 호출될 수 있다. public class item12 { public static void main(String[] args) { Info info1 = new Info("Gayoung", 26); System.out.println(info1); // to.. 2022. 4. 19.
item 11. equals를 재정의하려거든 hashCode도 재정의하라 hashCode란? 간단히 말해, hashCode() 는 해싱 알고리즘에 의해 생성된 정수 값을 반환합니다. ( equals() 에 따라) 동일한 객체는 동일한 해시 코드를 반환해야 합니다. 다른 객체는 다른 해시 코드를 반환할 필요가 없습니다. As much as is reasonably practical, the hashCode() method defined by class Object does return distinct integers for distinct objects. hashCode의 일반 규약 equals 비교에 사용되는 정보가 변경되지 않았다면 애플리케이션이 실행되는 동안 그 객체의 hashCode는 항상 같은 값을 반환해야한다. 단, 애플리케이션이 재실행하는 경우 값이 달라질 수는 있.. 2022. 4. 19.
728x90