Namespace Framework.Patterns.Pure.Specification
Classes
- AndSpecification<T>
두 Specification AND 조합. 둘 다 true일 때만 true. 단락 평가(short-circuit) 적용 — left가 false면 right 평가 안 함. [규칙] 직접 인스턴스화 비권장 — SpecificationExtensions.And() 사용.
- NotSpecification<T>
Specification 결과 반전. IsSatisfiedBy 결과가 false면 true, true면 false. 이중 Not은 원래 spec과 동일. [규칙] 직접 인스턴스화 비권장 — SpecificationExtensions.Not() 사용.
- OrSpecification<T>
두 Specification OR 조합. 하나라도 true면 true. 단락 평가(short-circuit) 적용 — left가 true면 right 평가 안 함. [규칙] 직접 인스턴스화 비권장 — SpecificationExtensions.Or() 사용.
- SpecificationExtensions
ISpecification<T>에 .And() / .Or() / .Not() 확장 메서드 제공. 조합 표현을 간결하게 유지. [규칙] static class — 상태 보유 금지. [규칙] 반환값은 새 ISpecification<T> 인스턴스.
Interfaces
- ISpecification<T>
조건 객체화 인터페이스. And/Or/Not 조합으로 복잡한 조건 표현. RuleEvaluator 내부에서 사용. [규칙] 구현체는 무상태(stateless)여야 한다. [규칙] 조합은 SpecificationExtensions(.And/.Or/.Not)으로 처리.