클래스 모델링 방법에 대한 제안이 필요합니다.올바른 사용을 보장하는 클래스 설계
클래스의 메소드는 A
, B
및 C
입니다. 메서드는이 특정 순서로 실행해야하지만 모든 메서드가 필요하지는 않습니다. 원하는 경우 C
번으로 전화하지 않고도 A
및 B
으로 전화 할 수 있습니다. 여기
B
및
C
워크 플로는 다음이된다 실행하기 전에 B
의 결과를 실행하기 전에 A
의 결과를 처리 할 필요가 있다는 점이다
public void RunA()
{
A();
}
public void RunAB()
{
A();
B();
}
public void RunABC()
{
A();
B();
C();
}
이 :
- 실행
A
제가 상기 용액 설계 방법의 결과 B
C
A
B
A
, B
및 C
을 개별적으로 실행하도록 허용 할 수 있지만 작동 순서는 더 이상 보장되지 않습니다. 이 워크 플로우를 설계하는 더 좋은 방법이 있습니까?
편집
내가 물었다 봤는데 :
은 "왜이 방법은 특정 순서로 호출해야합니까?"
질문에 대답하려면 설치 프로그램을 설명해야합니다.
- A : : DTO들에 변환 도메인 모델링의 결과에
- 거래 :
A
,B
및C
는 느슨하게 다음 단계로 변환 저장 변환 중에 발생한 예외 - B : DTO에 대한 통계 및 결과 계산
- B의 결과 : 할인 일 전자 통계
- C :
A
체인에서 첫 번째 것은 분명하다 제출 저장 상태 :이 API를 통해 C의 결과에
B
과 C
은 서로 바꿔야 할 수도 있지만, 질문을 위해서 이 실행되기 전에 C
이 적합하지 않다고 가정 해 봅니다. A
, B
및 C
은 이론적으로 결과 자체를 처리 할 수 있습니다. 대부분 결과에 대한 정보를 저장하는 것으로 귀결됩니다. 그러나 내가 성취하고자하는 것은 결과가 어디로 향하는 지 전혀 알지 못하는 것입니다.
호출을 추적하고 순서가 잘못된 호출을 던지십시오. 그런 다음 메소드를 문서화하여 사람들이이 메소드를 사용하는 것이 확실하도록하십시오. 그런 다음 재 설계하십시오. – Will
그 방법에는 여러 가지가 있습니다. 확실히이 디자인을 사용하지 마십시오. 하나의 대안 (다른 많은 것 중 하나)은'A()'의 결과를'B()'에 전달한 다음 그 결과를'C()'에 전달하는 것입니다. 'A() '등의 결과가 없으면'B()'를 호출 할 수 없다. – xxbbcc
또 다른 옵션은 단순히'A()'가 호출되기 전에'B() '. 클러치를 누르지 않으면 (A) 수동 변속기 (B)를 시동 할 수없는 것과 유사합니다. –