나는 기본 두 개의 클래스를 가지고 Operation
와 Trigger
. 각각에는 특정 유형의 작업 또는 트리거를 전문으로하는 여러 하위 클래스가 있습니다. A는 Trigger
특정을 트리거 할 수 있습니다 Operation
. 동안 Operation
특정에 의해 트리거 될 수 있습니다 Trigger
.
주어진 Operation
것을 주어진 Trigger
(또는 그 반대로) 매핑하는 코드를 작성해야 하지만 어디에 넣을 지 잘 모르겠습니다.
이 경우 코드는 한 클래스 또는 다른 클래스에 명확하게 속하지 않습니다. 따라서 단일 책임 원칙의 관점에서 코드가 어디에 속해 있는지 확실하지 않습니다.
모든 것이 작동하는 세 가지 옵션을 볼 수 있습니다. 1과 2는 의미론의 선택으로 보이지만 3은 완전히 다른 접근법을 나타냅니다.
- 예를 들어 트리거에서
bool Triggers(Operation o)
. - 예를 들어 작업에서
bool TriggeredBy(Trigger t)
. - 예를 들어, 매핑을 관리하는 완전히 새로운 클래스
bool MappingExists(Trigger t, Operation o)
.
단일 책임 원칙과 관련하여 공유 매핑 코드를 배치 할 위치를 어떻게 결정해야합니까?
책임을 분담 할 때 단일 책임을 관리하는 방법은 무엇입니까?
편집
실제 코드는 다음과 같습니다. 모든 속성이 있습니다 중 하나 string
, Guid
, collection<string>
, 또는 enum
. 기본적으로 작은 데이터 조각을 나타냅니다.
편집 2.
반환 유형이 bool 인 이유입니다. 다른 클래스는의 모음 Trigger
과의 모음 을 사용할 것 입니다 Operation
. Trigger
와 a 사이에 매핑이 존재하는 위치를 알아야 합니다 Operation
. 해당 정보를 사용하여 보고서를 작성합니다.