2011-08-23 6 views
2

MailItems 큐를 처리하는 시나리오가 있습니다. 각 MailItem을 처리하고 나면 MailItem의 상태를 업데이트해야합니다. 상태를 업데이트하는 논리는 상당히 복잡합니다. 내 생각으로는 LogItem 클래스 내부에 논리 자체를 캡슐화하지 말고 나중에 관리하기 쉽도록 별도의 클래스에 캡슐화해야한다는 것입니다.복잡한 비즈니스 로직을 어떻게 구현해야합니까?

제 질문은 무엇이 가장 좋은 방법입니까?

사양 패턴을 고려했습니다. 뿐만 아니라하여,

public interface ISpecification<T> 
{ 
    bool IsSatisfiedBy(T candidate); 
} 

내 문제는이 특별한 경우에 내 로직이 후보 객체의 내부 상태에 의해뿐만 아니라 영향이다 :이 패턴에 대한 나의 연구는로 정의 ISpecification 인터페이스에 달려 다음이다 논리에서 고려해야 할 외부 값.

따라서는 MailItem 내 메소드 서명은 다음과 같이 보일 필요가있다 :

public void ChangeStatus(bool mailSentSuccessfully) 

표준 ISpecification 인터페이스는 외부 값 전달에 대한 수용하지 않습니다. 표준 구현을 간단하게 "구부릴 것"입니까, 아니면 패턴 정의의 "규칙"을 위반합니까? 이것이 답이 아니라면 어떤 패턴 기반 옵션을 조사 할 수 있습니까?

답변

1

다른 패턴을 포함하는 후보자 유형을 사용하여 간단하게 사양 패턴을 사용할 수 있습니다 (예 : ISpecification<Pair<MainType,ExternalType>>을 확장하여 쌍에 대한 유효성 검사 빌드).

이미 Pair 또는 Tuple 유형을 제공하는 언어로 작업하지 않는 경우이 전략을 사용하려면 해당 언어도 만들어야합니다.

그게 효과가 없다면 패턴에 대한 변형을 만드는 것이 좋습니다. 그들은 정말로 디자인의 규칙이 아니라 안내 표지입니다.

관련 문제