Data Access Routines

  Martin Fowler

데이터 무결성에 대한 얘기가 있습니다.

특히나 관심이 가는 부분은 Collection을 반환 할 때, 문제점을 제기 하였습니다.

일반적으로 getter를 이용해서 Collection을 반환하고 ( 실제는 포인터 값이 전달될거라 기대 됩니다.)

반환된 Collection의 내부 값을 변경 하게 되면 위의 getter 를 제공하는 class가 가지고 있는 attribute의

값까지 변경이 됩니다. 이는 Orient-Object 의 데이터 무결성에 위배가 되는 상황입니다.

따라서, 다음과 같은 세 가지의 방법을 대안으로 제시 하고 있습니다.

1. Copy
  – Collection 을 복사본을 반환 값을 사용하여 객체(Object)가 가지고 있는 attibute를 보호 합니다.
    ( 성능에 대한 문제가 제기 될 수 있습니다. 그러나, 그 생명 주기(life-cycle) 이 짧고 하여
    우려 대상이 아닐 수도 있습니다.)

2. unmodifiableList
  – 수정을 하지 못 하게 하여 반환 합니다.

3. IEnumerator 으로 제공
  – Iterator 를 제공하여 Collection의 내부의 값만 참고 할 수 있도록 합니다.
   그러나, 기타 size() 등의 Colection의 기타 기능을 활용 할 수 없다는 단점이 있습니다.

 이중 마틴 파울러 아져씨는 1번을 추천 하시는 것 같습니다. 저도 이제 이점을 유념하여 객체를

반환할 필요가 있을 때, 복사 또는 한 정 시키는 방법을 활용해야 할 것 같습니다.

감사합니다.

몇 안되는 독자가 계시는것 같은데, 이해가 됐으면 좋겠습니다.

원문에 대한 URL을 아래에 참고합니다.

URL

Leave a Reply

Your email address will not be published. Required fields are marked *