본문 바로가기

분류 전체보기128

[이펙티브 자바] 05. 열거 타입과 애너테이션 [이펙티브 자바] 05. 열거 타입과 애너테이션 자바에는 특수한 목적의 참조 타입이 두 가지가 있다. 하나는 클래스의 일종인 열거 타입(enum)이고, 다른 하나는 인터페이스의 일종인 애너테이션(annotation)이다. 아이템 34. int 상수 대신 열거 타입을 사용하라 자바에서 열거 타입을 지원하기 전에는 아래 코드처럼 정수 상수를 한 묶음 선언해서 사용하곤 했다. public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int ORANGE_NAVEL = 0 public static final int ORANGE_TEMPLE = 1; 정수 열거 패턴 기법에는 단점이 많다. 1.. 2022. 9. 1.
[이펙티브 자바] 04. 제네릭 [이펙티브 자바] 04. 제네릭 제네릭은 자바 5부터 사용할 수 있다. 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때마다 형변환을 해야했는데, 런타임에 형변환 오류가 나곤 했다. 반면 제네릭을 사용하면 컬렉션이 담을 수 있는 타입을 컴파일러에 알려주게 되어 컴파일러는 알아서 형변환 코드를 추가할 수 있게 된다. 덕분에 더 안전하고 명확한 프로그램을 만들 수 있다는 장점이 있지만, 코드가 복잡해진다는 단점이 있다. 아이템 26. 로 타입은 사용하지 말라 클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 제네릭 타입을 하나 정의하면 그에 딸린 로 타입(raw type)도 함께 정의된다. 로 타.. 2022. 8. 24.
[헤드퍼스트 디자인패턴] 10. 프록시 패턴 (Proxy pattern) [헤드퍼스트 디자인패턴] 10. 프록시 패턴 (Proxy pattern) 1. 프록시 패턴이란? 특정 객체로의 접근을 제어하는 대리인을 제공한다. 프록시 패턴을 사용하면 원격 객체나 생성하기 힘든 객체, 보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리인 객체를 만들 수 있다. 2. 프록시에서 접근을 제어하는 몇가지 방법 원격 프록시를 써서 원격 객체로의 접근을 제어할 수 있다. 가상 프록시(virtual proxy)를 써서 생성하기 힘든 자원으로의 접근을 제어할 수 있다. 보호 프록시(protection proxy)를 써서 접근 권한이 필요한 자원으로의 접근을 제어할 수 있다. 3. 프록시 패턴의 클래스 다이어그램 RealSubject : 진짜 작업을 처리하는 객체 Proxy : RealS.. 2022. 8. 21.
[이펙티브 자바] 03. 클래스와 인터페이스 [이펙티브 자바] 03. 클래스와 인터페이스 아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 15.1 캡슐화의 장점 캡슐화의 장점은 정말 많은데, 그중 대부분은 시스템을 구성하는 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최저과, 적용, 분석, 수정을 개별적으로 할 수 있게 해주는 것과 연관되어 있다. 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 .. 2022. 8. 20.
[이펙티브 자바] 02. 모든 객체의 공통 메서드 https://be-developer.tistory.com/87 [이펙티브 자바] 01. 객체 생성과 파괴 [이펙티브 자바] 01. 객체 생성과 파괴 객체의 생성과 파괴를 다룬다. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법, 올바를 객체 생성 방법과 불필요한 생성을 피하는 방법, be-developer.tistory.com [이펙티브 자바] 02. 모든 객체의 공통 메서드 Object는 객체를 만들 수 있는 구체 클래스지만 기본적으로는 상속해서 사용하도록 설계되었다. Object에서 final이 아닌 메서드(equals, hashCode, toString, clone, finalize)는 모두 재정의를 염두해 두고 설계된 것이라 재정의 시 지켜야 하는 일반 규약이 명확히 정의되어 있다... 2022. 8. 10.
[헤드퍼스트 디자인패턴] 09. 상태 패턴(State Pattern) [헤드퍼스트 디자인패턴] 09. 상태 패턴(State Pattern) 1. 상태 패턴이란? 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 2. 상태 기계 기초 지식 알아보기 뽑기 기계를 만들때, 상태를 이용해 기계를 구현하는 방법을 간단하게 살펴보자. 2.1 우선 상태들을 모아본다. 총 4개의 상태가 존재한다. (No Quarter : 동전 없음, Has Quarter : 동전 있음, Gumball Sold : 알맹이 판매, Out of Gumballs : 알맹이 매진) 2.2 현재 상태를 저장하는 인스턴스 변수를 만들고 각 상태의 값을 정의한다. final static int SOLD_OUT = 0; final static.. 2022. 8. 7.
728x90
반응형