2016-06-21 2 views
1

예를 들어, 서버와 통신하고 Chat 유형의 객체 목록 (Post 유형 등의 객체 포함)이 포함 된 ChatDataProvider 클래스가 있다고 가정 해 봅시다.응용 프로그램 전체에서 동일한 데이터를 사용하거나 복사합니까?

  1. 데이터를 "얕은"복사 목록 객체에 대한 참조를 보내기 : 내가 다른 클래스에이 채팅을 TRANSFERT (주문을 표시 할) 할 경우에, 나는 가능성의 몇 가지를 가지고 만들기 원래 객체
  2. 깊은 복사를 참조 데이터

내가 데이터를 캡슐화되지 않기 때문에 1 & 2. 나쁜 디자인으로 간주 될 생각이 들어 새로운 목록. 예를 들어 항목 변경의 순서는, 내가 하나가 같은 순서를이 깊은 복사 버전으로 변경 전파하고 적용해야하는 경우 (

  • 데이터 일관성, 또는 나는 것 : 그러나 그것은 또한의 장점이 있습니다

  • 감소 메모리 사용량

응용 프로그램 전반에 걸쳐 일관된 데이터를 Keepting) 그 목록의 새로운 깊은 사본을 얻을 필요하면 오류가하는 경향이 큰 구현 오버 헤드를 생성합니다. 그리고 이것은 동봉 된 응용 프로그램이므로 전파되지 않아야하는 "무단"변경 사항이 발생하지 않습니다 (자동).

그럼 어느 하나를 선택 하시겠습니까? 두 가지 모두 유효합니까?

아마도이 질문에 대한 답변이있을 수 있지만 무엇을 검색해야할지 모르겠습니다. 그래서 누군가가 링크/자원을 알고 있다면 괜찮습니다.

답변

1

모두 사용하는 프로젝트의 디자인이 좁습니다.

1) 응용 프로그램이 많은 다른 패키지에서 객체를 사용해야하는 경우 딥 복사 방식 대신 복제하기 위해 얕은 사본을 사용하여 복제하십시오. 하나의 객체에서 수행 된 작업을 다시 작성하여 동일한 데이터를 유지 관리하는 것은 성능, 메모리 및 비용면에서 지루한 작업입니다. 나는 그것을 피할 것이다.

2) 동일한 개체에 대해 동시에 작업을 수행하는 경우 오류가 발생하기 쉽고 좋은 디자인이 아닙니다.

따라서 개체를 액세스해야하는 경우 얕은 복사/참조로 이동하거나 동시에 모든 작업을 수행하는 경우 딥 복사로 이동하십시오.

관련 문제