2013-07-15 2 views
0

내 도메인 객체의 생성자가 깔끔하게 변하기 때문에 건물을 짓고 있습니다. 내 질문은 제약 조건에 대한 테스트를 공장으로 이동해야합니까 아니면 도메인 객체 생성자에 두어야합니까?Object Constructor 또는 Factory에서 제약 조건을 확인 하시겠습니까?

테스트는 대부분 개체가 인스턴스화되기 전에 필요한 매개 변수가 제공되는지 또는 관련 개체가 특정 값을 갖는지 확인하는 것입니다. 테스트가 실패하면 일반적으로 예외가 발생합니다.

한편으로는 논리가 도메인 객체에 속한다고 생각합니다. 왜냐하면 객체의 본질적인 부분이기 때문입니다. 예를 들어 이름이없는 애완 동물은 유효하지 않습니다.

한편, 내가 공장으로 이전하는 거의 모든 부분은 도메인 객체의 필수 부분입니다. (이것은 도메인 객체 팩토리의 결과입니다. 도메인 객체의 캡슐화가 깨졌습니다.)

도메인에 남겨 두는 것이 더 안전 할 수 있지만 정돈이 잘되어 있지 않습니다. 공장에 있다면 코드가 더 읽기 쉽지만 다른 사람이 공장 대신에 new 연산자를 실수로 사용하면 문제가 생길 것입니다 ...

+0

도메인 개체가 유효한지 여부를 확인해야합니다. 필수 필드가 유효성 검사 규칙을 충족시키지 않으면 선택적으로 팩터 리 클래스에서 예외를 catch하는 경우 객체의 생성자에 예외를 던집니다. – Orangepill

+0

오렌지 필, 왜 대답하지 않습니까? –

답변

1

의견에 명시된 바와 같이, 유효성 검사는 도메인 객체에만 해당됩니다. 그런 식으로 모든 공장 ​​특정 유효성 검사 규칙이 혼란스럽지 않도록 공장을 유지합니다.

팩토리에 대해 오류 처리를 중앙 집중화하려는 경우 유효성 검사 요구 사항과 일치하지 않는 개체를 만들려고하면 각 클래스가 예외를 throw합니다. 당신의 공장은 그들을 붙잡고 다룰 수 있습니다.