제4 장: 대상 과 데이터 구조

2054 단어
1. 데이터, 대상 의 반대 칭 성
대상: 데 이 터 를 추상 에 숨 긴 후 조작 데이터 의 함 수 를 노출 합 니 다.데이터 구조: 데이터 자 체 를 노출 하고 의미 있 는 함 수 를 제공 하지 않 습 니 다.
예 를 들 어 아래:
public class Point {
    public double x;
    public double y;
}
public interface Point {
    double getX();
    double getY();
    void setCartsian(double x,double y);
    double getR();
    double getTheta();
    void setPolar(double r,double theta);
}

하 나 는 실현 을 드 러 냈 고, 하 나 는 실현 을 완전히 숨 겼 다.그러나 이 인 터 페 이 스 는 데이터 구 조 를 보 여 준다.숨겨 진 실현 은 변수 에 함수 층 만 추가 하 는 것 이 아 닙 니 다.숨 기 고 실현 하 는 것 은 추상 과 관련 이 있다!클래스 는 단순히 메모리 와 할당 기 를 사용 하 는 것 이 아니 라 추상 적 인 인 인 터 페 이 스 를 노출 하 는 것 입 니까? 사용자 가 데이터 의 실현 을 이해 하지 않 아 도 데이터 본 체 를 조작 할 수 있 습 니 다.
public interface Vehicle {
    double getFuelTankCapacityInGallons();
    double getGallonsOfGasoline();
}
public interface Vehicle {
    double getPercentFuelRemaining();
}

상기 두 단락 의 코드 는 후자 가 좋다.우 리 는 데이터 의 세부 사항 을 폭로 하 기 를 원 하지 않 고 추상 적 인 형태 로 데 이 터 를 표현 하 기 를 원한 다.수치 기와 값 부여 기 를 함부로 넣 지 마라. 그것 은 최 악의 선택 이다.
프로 세 스 식 (데이터 구 조 를 사용 하 는 코드) 은 기 존의 데이터 구 조 를 바 꾸 지 않 는 전제 에서 새로운 함 수 를 추가 하 는 데 편리 하 다.대상 코드 는 기 존 함 수 를 바 꾸 지 않 는 전제 에서 새로운 종 류 를 추가 하 는 데 편리 하 다.반대로 말하자면 과정 은 코드 가 새로운 데이터 구 조 를 추가 하기 어렵 기 때문에 모든 함 수 를 수정 해 야 하기 때문이다.모든 클래스 를 수정 해 야 하기 때문에 대상 코드 에 새 함 수 를 추가 하기 어렵 습 니 다.결론: 모든 대상 은 전설 이 고 때로는 과정 적 인 조작 을 해 야 한다.
2. 드 머 테 르 율
The Law of Demeter: 모듈 은 조작 대상 의 내부 상황 을 이해 해 서 는 안 됩 니 다.더 정확히 말 하면 클래스 C 의 방법 f 는 다음 과 같은 대상 만 호출 해 야 한다 고 생각 합 니 다.
  • C
  • f 가 만 든 대상;
  • 매개 변수 로 f 에 전달 하 는 대상;
  • C 실체 변수 가 보유 한 대상.방법 은 데이터 구 조 를 되 돌려 주지 않 는 한 함수 가 대상 을 되 돌려 주 는 방법 을 사용 해 서 는 안 된다.지능 은 친구 와 이 야 기 를 나 누고 낯 선 사람과 경원 하 는 것 이다.

  • 3. 데이터 전송 대상
    가장 세련 된 데이터 구 조 는 공유 변수 만 포함 하고 함수 가 없 는 클래스 입 니 다.이런 구 조 는 때때로 데이터 전송 대상, DTO (Data Transfer Objects) 라 고 불 린 다.DTO 는 매우 유용 한 구조 로 특히 데이터베이스 와 통신 하거나 소켓 으로 메 시 지 를 전달 합 니 다.더 흔히 볼 수 있 는 것 은 bean 류 의 구조 이다.콩 구 조 는 자체 할당 기와 수치 추출 기 작업 의 개인 변 수 를 가지 고 있다.이런 반 봉 투 는 더욱 OO 적 으로 보일 수 있 는데, 당시 에는 통상 적 으로 아무런 이익 도 없 었 다.

    좋은 웹페이지 즐겨찾기