이것은 설계상의 결함을 크게 나타냅니다.
클래스에서 목록을 래핑하고 클래스를 공유하고이를 사용하여 목록에 대한 액세스를 제어함으로써 동일한 목표를 달성 할 수 없는지 확인하십시오.
두 가지 클래스가 독립적으로 목록을 수정해야하는 경우에만이 작업이 완전하게 작동하지 않는 유일한 경우입니다.
이것이 필요한 경우라면, 나는 (래퍼 클래스의 다른 인스턴스를 각각의 수정 클래스 (동일한 소스리스트에 대한 참조)에 건네 주면 새로 추가 된 데이터가 원래 클래스를 참조하는 ID - 쿼리 할 때 래퍼는 태그가없는 항목 (원래 공유 목록에 포함 된 항목)과 태그가 지정된 항목 만 자신의 ID로 반환합니다.
래퍼 클래스에는 두 번째 목록이 포함될 수 있으며 쿼리 할 때 원래 목록과 두 번째 목록의 결합 된 결과를 반환 할 수 있습니다.
나는 깊은 사본을 원한 적이 거의 없었다. 그것은 일어난다. 그러나 그것은 아주 드물다.
더 많은 정보를 게시하면 재 디자인을 돕는 데있어 더 구체적 일 수 있습니다.
ALSO : (편집) 복사 된 배열 목록이 문제가되지 않을 가능성이 있습니다. 아마도 완전한 사본이 아닐 수도 있습니다. 깊은 복사의 경우, 복사 방법을 구현한다는 것을 의미합니다 (나는 그들이 .clone()이라고 불리우는 것으로 믿습니다. 배열 목록에있는 각 객체에 대해, 내가 말했던 것처럼, 나는 결코 사용하지 않습니다. 당신은 당신의 다음 목록에 새로운 사본을 얻기 위해 각각에 당신의 사본 방법을 부른다.
또한 복사 된 개체가 참조하는 개체도 복제해야합니다. "깊은"은 나무 아래로 모든 길을 의미합니다.
나는 당신이 그 과정에서 어딘가에 실패하고 있다고 생각합니다.
나는 왜 당신이 참조 대신 복사본이 필요하다고 느끼는지 듣고 싶습니다.
코드를 게시하십시오. 두 클래스. – duffymo
나는 이런 식으로 데이터 목록을 공유하는 두 개의 클래스가있는 디자인에 대해 궁금해 할 것입니다. 단 하나의 클래스가 그것을 소유해야합니다. 왜 이것을해야합니까? 설명 해주십시오. – duffymo