현재 프리젠 테이션 모델 패턴을 사용하여 Flex/PHP 프로젝트의 클라이언트 측을 구축 중입니다.
나는 현재 노드라는 도메인 개체에 대한 편집 할 정보를 표시하는 뷰를 가지고 : 나는 달성하기 위해 노력하고있어프리젠 테이션 모델에서 클라이언트 측 도메인 객체 상태 처리
. 노드가 편집 가능하고 사용자에게 적절한 권한이 있는지 여부에 따라이 오브젝트를 변경할 수있는 곳에서 추가보기를 사용할 수 있습니다. 사용자가 "변경 사항 저장"을 결정하면 모든 변경 사항이 서버에 커밋됩니다. 노드 A가 변경되고 사용자가 노드 B를 저장하지 않고 다른 노드 B로 이동하면 NodeA는 원래 상태로 되돌아갑니다.
디자인 :
나는 현재 노드에 대한 참조를 보유하는 정보를보기위한 PM 있습니다. 편집 뷰의 PM은이 정보 PM에서 확장되어 래핑 된 Node 객체를 변경하는 메소드를 추가합니다. 두 PM 모두 동일한 노드 참조가 그들에 주입되고 정보/편집보기의 모든 필드는 PM을 통해 노드에 바인딩됩니다.
문제 :
사용자가 NodeA에 변경 내용을 만들지 만 커밋하지 않습니다, 나는 다시 원래 상태로 되돌릴 수있는 우아한 해결책을 생각할 수없는 것. 기본적으로, 지금까지 생각한 것은 편집 PM에 별도의 값 사본을 보관하는 것입니다. 복제본은 새로운 노드 참조를 생성하거나 동일한 노드 속성 세트를 통해 복제합니다. 이 두 가지 중 이전 노드는 이미 도메인 논리를 포함하고 있기 때문에 더 좋은 아이디어 인 것처럼 보이지만 제한된 범위에서 사용 되더라도 고유 한 도메인 개체의 복제본을 만드는 것이 나쁜 방법인지 궁금합니다.
보기에는 자체 PM 인스턴스가 있지만 두 PM 모두에 삽입 된 동일한 노드 인스턴스에 대한 참조를 보유합니다.그들에게 동일한 노드의 개별 인스턴스를 제공한다면 노드 인스턴스의 맵/풀 (ID 별)을 유지하면서 모델에 과감한 변경을 가하고 있습니다. – Stiggler
두 개의 노드에 대해 두 가지보기가있는 것처럼 보이는 질문이 생겼습니다. 각각의 PM 인스턴스가있는 두 개의 뷰가 동일한 노드를 참조하는 이유는 무엇입니까? 이 경우 두 인터페이스보기가 실제로 동일한 인터페이스의 두 부분 일 수 있습니다.이 경우 둘 다 PM 만 있습니다. –
양쪽보기에 대해 하나의 PM이있는 경우 어떻게 내 문제를 해결할 수 있습니까? 나는 그것이 실제로 어떻게 다른지를 보지 못한다. – Stiggler