주어진 개체에 대해 특정 유효성 검사를 수행해야하는 프로젝트의 디자인 단계에 있습니다. 유효성 검사는 5 개의 개별 그룹으로 그룹화 할 수 있습니다. 각 개별 유효성 검사기 범주에는 해당 구현에서 약간 다른 여러 버전이있을 수 있습니다.입력에 따라 다른 유효성 검사기
public interface Validator {
boolean validate(Object o);
}
public abstract CostValidator implements Validator {
//common logic related to cost validator
}
public class CostValidator1 extends CostValidator {
boolean validate(Object o) {
//implementation 1
}
public class CostValidator2 extends CostValidator {
boolean validator(Object o) {
//implementation 2
}
개체의 비즈니스 그룹에 따라 CostValidator1 또는 CostValidator2를 실행해야합니다. 구성에 기초로부터 처리 흐름은 검증 목록을 가져올 것이다
BusinessGroupA {
validators = [CostValidator1, SomeOtherValidator2...]
}
BusinessGroupB {
validators = [CostValidator2, AnotherValidator99...]
}
각 비즈니스 그룹
는, I는 구성 시스템 즉, 이러한 검증의 목록을 유지 관리 계획 포함 된 각 유효성 검사기에서 유효성 검사를 실행합니다.이 접근법에 결함이 있습니까? 내가 설명한 사용 사례를 해결할 더 좋은 방법이 있습니까?
에게 는
요구 사항이 주어진다면 더 나은 설계 방법이 있는지 알고 싶습니다. 내 프로젝트가 설계 단계에 있기 때문에 최대한 많은 대안을 탐구하고 싶습니다. – Rahul
왜 검증 논리가 별도의 클래스 (들)로 만들어 지는지에 대한 특별한 이유가 있습니까? 왜 객체가 스스로를 검증 할 수 없습니까? 'if (! object1.isValid()) {...} ' –
개체가 속한 비즈니스 그룹에 따라 CostValidator1 또는 CostValidator2 또는 비용 유효성 검사가 적용되지 않습니다. 마찬가지로 그룹 A에 속한 개체는 파이프 라인에 3 개의 유효성 검사기를 가질 수 있으며 B에 속한 개체는 5가 있습니다. 또한 향후 필요한 변경 사항에 따라 개체를 하나의 비즈니스 그룹에서 다른 그룹으로 이동할 수 있습니다. 이 개체는 다양한 구성 요소에 의해 작동되며 비즈니스 논리의 자체 측면을 구현합니다. 여기에 나열된 유효성 검사기는 이러한 논리 그룹 중 하나에 속합니다. 또한 객체 클래스의 코드베이스는보다 기능적인 접근법을 따른다. OO – Rahul