Effective Java 학습 노트 제1 2 조 - 클래스 와 구성원 의 접근 가능 능력 최소 화

2553 단어 자바.netBlog
좋 은 모듈 디자인 은 가능 한 한 자신의 내부 정 보 를 밀봉 해 야 모듈 간 의 결합 정 도 를 최소 화 할 수 있다.개발 이 병행 되 는 것 은 개발 의 속 도 를 가속 화하 고 체계 적 인 유지 에 편리 할 것 임 에 틀림없다.자바 에 서 는 접근 제어 부 를 통 해 이 문 제 를 해결 합 니 다.
 
Public 는 이 종 류 는 모든 범위 에서 사용 할 수 있 음 을 나타 낸다.protected 는 하위 클래스 와 가방 안의 클래스 만 private - package (default) 를 사용 할 수 있 음 을 표시 합 니 다.
디자인 할 때 는 가능 한 한 모든 유형 이나 구성원 이 외부 에 방문 되 지 않도록 해 야 한다.한 종 류 를 설계 할 때 는 가능 한 한 4321 의 순서에 따라 설계 해 야 한다.만약 한 종류 가 다른 종류 에 만 사용 된다 면, 그것 을 이런 종류의 내부 종류 로 설계 하 는 것 을 고려 해 야 한다.일반적으로 Public 의 클래스 는 Public 필드 가 있어 서 는 안 되 지만, 우 리 는 보통 하나의 클래스 로 모든 상수 를 정의 합 니 다. 이것 은 허용 합 니 다.그러나 이 필드 들 이 기본 데이터 형식 이거 나 가리 키 는 대상 을 참조 하 는 것 은 수정 할 수 없다 는 것 을 보증 해 야 한다.그렇지 않 으 면 그들 은 수 정 될 것 이다.예 를 들 어 아래 의 정의 에서 data 는 불합리 하 다. 다른 사람들 은 배열 의 내용 을 바 꿀 수 있 고 안전 에 구멍 이 있 으 며 뒤의 두 가 지 는 문제 가 없다.
public class Con  
{  
   public static final int[] data = {1,2,3};// it is bad  
   public static final String hello = "world";  
   public static final int i = 1;  
}  
public class Con
{
   public static final int[] data = {1,2,3};// it is bad
   public static final String hello = "world";
   public static final int i = 1;
} 

 
data 안전 위험 을 해결 하 는 방법 은 두 가지 가 있 습 니 다.
  • 공유 방법 을 개인 배열 로 바 꾸 고 공유 하 는 비 가 변 목록
  • private static final Type[] PRIVATE_VALUES = {...};   
    public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES));  
    private static final Type[] PRIVATE_VALUES = {...};
    public static final List VALUES = Collections.unmodifiableLis(Arrays.asList(PRIVATE_VALUES)); 
    
    

     
  • 공유 하 는 배열 을 공유 하 는 방법 으로 바 꾸 고 개인 배열 의 복사
  • 로 되 돌려 줍 니 다.
    private static final Type[] PRIVATE_VALUES = {...};   
    public static final Type[] values(){   
        return (Type[])PRIVATE_VALUES.clone();   
    }  
    
    private static final Type[] PRIVATE_VALUES = {...};
    public static final Type[] values(){
        return (Type[])PRIVATE_VALUES.clone();
    } 
    
    

     
    한 마디 로 하면 모든 복잡 한 누적 인터페이스 와 구성원 을 API 의 일부분 으로 바 꾸 는 것 을 방지 해 야 한다. 공유 정적 final 도 메 인의 특수 한 상황 을 제외 하고 공유 류 는 공유 도 메 인 을 포함 하지 말고 정적 final 도 메 인 이 인용 하 는 대변성 을 확보 해 야 한다.
     
    본 고 는 CSDN 블 로그 에서 왔 습 니 다. 전재 할 때 출처 를 표시 해 주 십시오. http://blog.csdn.net/ilibaba/archive/2009/01/16/3795124.aspx

    좋은 웹페이지 즐겨찾기