많은 종속 객체를 삭제하는 트리거를 사용하여 객체 삭제를 설계하는 가장 좋은 방법을 알고 싶습니다.많은 종속 객체가있는 객체를 삭제하기위한 OOP 설계
다음은 예입니다. Employer 클래스가 있습니다. 사용자가 삭제되면 모든 작업, 인보이스가 삭제됩니다. 작업이 삭제되면 범주 선택도 삭제됩니다. 등등. 따라서 Employer의 삭제가 더 많은 객체에서 삭제를 트리거하는 것을 볼 수 있습니다. 문제는 종속 객체 삭제에 필요한 많은 인수를 Employer 클래스의 delete 메소드에 전달해야한다는 것입니다.
다음은 단순화 된 예입니다. 메인 클래스를 상상해보십시오. Main 개체가 삭제되면 Dep1, Dep2 개체도 함께 삭제해야합니다. Dep1이 삭제되면 Dep11도 삭제해야합니다. 삭제 방법이 Dep1.delete (arg1), Dep2.delete (arg2), Dep11.delete (arg3) 인 경우 Main의 delete 메소드는 다음과 같아야합니다 : Main.delete (arg1, arg2, arg3) . 너 알지? 더 많은 객체가 Main에 의존합니다 - 삭제를 위해 더 많은 인수가 필요할 것입니다.
데이터베이스에서 삭제, 즉 "비즈니스 논리"의미에서의 삭제에 관심이 있다는 점도 지적해야합니다. 나는 심지어 "delete"객체를 delete 메소드에서 설정 해제하지 않았다. 내가 생각 한 어떤 옵션
: 별도의 객체로 삭제에 필요한 인수를 그룹화
- . 나는이 모든 논의가 어떻게 그룹화 될 수 있는지 보지 못한다. 그들은 단순히 함께 속하지 않습니다. 예를 들어 Invoice_searcher와 Job_searcher가 필요한 경우 - 왜 그들은 하나의 객체에서 함께 사용됩니까? 그리고 어떤 대상이 될 수 있습니까?
- Employer 클래스의 delete 메소드에서 종속 오브젝트를 삭제합니다. 이 경우 자식에 대한 delete 메소드를 명시 적으로 호출하지 않으면 시스템이 일관성없는 상태로 남습니다. 나는 그것을 피하고 싶습니다. 한 번 u는 적은 참조 자동으로 될 것입니다 직원 참조가 적은 다른 수 있도록하는 방식으로 구성을 사용하는
귀하의 질문에 답변하지 못해 죄송합니다.하지만 Udi Dahan은 "삭제"라는 용어에 대한 훌륭한 블로그를 게시했습니다. http://www.udidahan.com/2009/09/01/dont-delete-just-dont/ – Kane
그게 전부입니다 흥미로운 관점이지만 내 문제를 해결하지 못하고 "삭제하지 않음"을 논의하는 것이이 질문의 맥락에서 벗어난 것입니다. –
종속 객체 삭제시 어떤 종류의 인수가 필요합니까? 'object.deleteYourself()'는 다른 입력을 요구하지 않아야하는 상당히 간단한 지시처럼 보입니다. – MrMisterMan