2010-11-19 4 views
1

나는 내 응용 프로그램에 대한 BLL을 작성하는 중이다. 내가 보았거나 읽은 것에서 볼 때 BLL은 무국적이어야합니다. 이것은 모든 BLL 방법이 정적 일 수 있음을 의미하지 않습니까? 아니면 적어도 각 BLL 클래스의 인스턴스가 하나만 필요합니까? 어떤 이유로 나는 이상하게 보였으므로, 나는 내 실험에 너무 깊이 파고 들기 전에 막대기의 잘못된 끝을 얻지 못하고 있는지 더 잘 확인했다.BLL에 무국적자가 있어야합니까?

데이터가 상태를 나타내므로 BLL 개체에 데이터가 포함되어서는 안된다는 것도 의미합니다. 따라서 각 BLL 작업을 호출 할 때 필요한 모든 데이터를 다시 쿼리하거나 캐시에서 가져온 다음 삭제해야합니다. . 그게 옳은 것 같니?

감사합니다.

답변

2

이론상으로, 그렇습니다. 스테이트리스 BLL은 모든 메소드가 정적 일 수 있음을 의미합니다.

그러나 정적 대신 BLL 개체의 인스턴스를 사용하는쪽으로 당신을 끌어 들일 수있는 몇 가지 고려 사항이 있습니다.

  1. 정적 메서드는 클래스 간의 긴밀한 결합을 도입하고 예를 들어 사용하지 못하게합니다. 의존성을 느슨하게 결합하는 인터페이스. 인터페이스를 사용하면 BLL의 테스트 가능성이 향상됩니다. 이제 서비스 레이어에 대한 단위 테스트를 작성할 때 조롱받을 수 있기 때문입니다. BLL 메소드가 정적 인 경우 일반적으로 '해결 방법'없이는이 작업을 수행 할 수 없습니다 (예 : .Net 환경에서 TypeMock 또는 Microsoft Fakes이 필요함).

  2. 복잡한 BLL 방법 (예 : 대형 트랜잭션 논리)에서는 비즈니스 규칙을 여러 가지 개별 방법으로 리팩토링하고 결과에 대해 모든 유효성 검사 및 규칙 위반을 단일 집계 된 모든 위반 사항을 포함하는 결과 이 경우 유효성을 검사하고 규칙 위반을 축적하는 엔티티/엔티티를 혼란스럽게 할 수 있으며 대신 클래스 인스턴스에서 이러한 항목을 상태 저장에 사용하도록 선택할 수 있습니다. 인스턴스 BLL에 대한 기본 클래스 또는 일반이 여기에서 지원할 수 있습니다.