이 질문은 주관적 일 수 있습니다. 그것이 여기에 속하는지 잘 모르겠다. Programmers임의의 논리를 기반으로 개체를 범주로 축소
데이터 유형이 X
(관계형 데이터베이스로 구성된 비즈니스 객체라고 생각 함)이라고합니다. 내 최종 목표는 보고서의 테이블에이 유형의 많은 인스턴스를 나타내는 것으로, 각 인스턴스는 몇 가지 다른 제목 중 하나에 있습니다.
임의 익숙 할 것이다 기업의 소프트웨어 개발을 끝낼 사람 관리에서 전해지는 논리에 따라 선택 아래에있는 객체 표시하는 제목 :
예 :
If the instance has a FooID of 6 and a BarFactor of < 0.5, place it under the "Borked" heading.
또는
If the Weight is > 0, and the CreatedDate is before Midnight but after 3PM, and today is not the 3rd Wednesday of the month, the object should be categorised as "Fluffy".
내 질문은 :입니다 X
의 인스턴스를 가져 와서 잠재적으로 두통을 유발하는 양의 논리를 인스턴스의 상태에 적용하고 해당 논리의 결과에서 범주/문자열/임의의 값을 얻는 일반적인 관용구입니까?
내 생각은 지금까지왔다 :
X
을 취하고String
을 반환하는 함수입니다. 나는 이것을 Megamoth으로 쉽게 볼 수 있었고, 요구 사항을 유지하기위한 b *****가 끊임없이 수정되었다.- 는
Heading
추상 형식, 그리고 나에게 제대로 오버로드ToString
방법Heading
의 인스턴스를 제공하는 팩토리 함수를 정의합니다. 나는이 기술이 아이디어 no와 동일한 이슈에 의해 괴롭혀 질 것이라고 생각한다. 1. 우리가 올바른 표제에 도착할 때까지 각각 문제를 조금 더 분열시키는 기능의 계층 구조. 예를 들어
: 우리가 값에 도달 할 때까지
public String GetHeading(X x)
{
if (x.Weight > 0)
return WeightGreaterThanZero(x);
else if (x.Weight < 0)
return WeightLessThanZero(x);
else
return WeightIsZero(x);
}
세 가지 "무게"기능 추가 조건을 테스트 할 것입니다. 여기에서 볼 수있는 문제는 어떤 함수가 어느 함수인지를 추적해야한다는 것입니다. FooIDIs6
함수는 WeightIsZero
또는 다른 함수에 의해 호출되었는지 여부를 알아야합니다. 그렇지 않으면 앞의 결정에 잠재적으로 의미가 없습니다. 우리는 WeightIsGreaterThanZero_FooIDIs6_GrandmotherIsOlderThan100
등으로 끝납니다.
그래, 일반적으로 그들이 갈 방법입니다. 불행히도 이번에는 옵션이 아닙니다. – Anthony
@ anthony-arnold : 자신의 용도로이 구성을 앱에 설치할 수 있습니까? 데이터베이스에 조건을 포함 할 필요는 없습니다. 예를 들어, 응용 프로그램과 함께 제공되는 xml 파일에 조건을 저장할 수 있습니다. –
제안 해 주셔서 감사합니다. 나는 그 해결책의 절반을 구현했다. 구성은 XML 파일에 저장되며, 우리는이를 유지 관리 할 것입니다. 의사 결정 논리를 하드 코딩하는 것보다 읽기 쉽습니다. 우리가 시간을 받으면 우리는 그것을 관리하기위한 양식을 던질 것입니다. – Anthony