동일한 비즈니스 객체에 대해 여러 클래스를 방지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/118401

  •  02-07-2019
  •  | 
  •  

문제

대부분의 경우 사용자 인덱스에 대한 속성이나 일부 데이터에 대한 인덱스 집합이 있는 비즈니스 개체가 있습니다.이 개체를 양식이나 다른 보기에 표시할 때 사용자의 전체 이름이나 데이터의 다른 속성 중 일부가 필요합니다.일반적으로 다른 클래스 myObjectView 또는 이와 유사한 클래스를 만듭니다.이 사건을 처리하는 가장 좋은 방법은 무엇입니까?

더 명확히 하기 위해:이슈 추적기가 있는 클래스가 있고 이슈에 대한 내 클래스에는 속성으로 IxCreatedByUser가 있고 IxAttachment 값(첨부 레코드의 인덱스) 컬렉션이 있는 경우.웹 페이지에 이것을 표시할 때 IxCreatedByUser 대신 John Doe를 표시하고 첨부 파일에 대한 링크와 페이지의 파일 이름을 표시하고 싶습니다.그래서 일반적으로 저는 첨부 파일 컬렉션과 CreatedByUserFullName 속성 또는 이와 유사한 특성을 사용하여 새 클래스를 만듭니다.페이지에 데이터를 표시하기 위해 이 두 번째 클래스를 만드는 것은 잘못된 것 같습니다.아마도 내가 틀렸을까요?

도움이 되었습니까?

해결책

외관 패턴입니다.

여러 데이터 소스의 복잡성을 추상화하기 위해 외관 패턴을 생성하는 귀하의 접근 방식이 종종 적절하며 코드를 이해하기 쉽게 만들 것이라고 생각합니다.

너무 많은 추상화 계층을 생성하지 않도록 주의해야 합니다. 왜냐하면 간접 수준은 코드를 읽기 쉽게 만들려는 초기 시도를 망칠 것이기 때문입니다.특히, 다른 곳에서 했던 것과 일치하는 클래스를 작성한다고 생각한다면 더욱 그렇습니다.예를 들어 myLoanView가 있는 경우 시스템의 모든 단일 대화에 대해 반드시 myView를 생성할 필요는 없습니다.코드에서 10단계 뒤로 물러나 재사용 가능하고 직관적인 추상화를 통해 여러 위치에서 사용할 수 있는 외관을 만들 수도 있습니다.

귀하의 챌린지의 정확한 성격을 자유롭게 자세히 설명해 주세요.

다른 팁

한 가지 핵심 원칙은 각 클래스에 정의된 목적이 있어야 한다는 것입니다."비즈니스 개체" 클래스의 목적이 비즈니스 개체와 관련된 관련 데이터를 노출하는 것이라면 검색 설명에 대한 요청을 해당 작업을 담당하는 관련 클래스에 위임하는 속성을 클래스에 생성하는 것이 전적으로 합리적일 수 있습니다. 정보.클래스와 관련된 모든 형식은 속성에서 수행됩니다.

다음은 이(매우 일반적인 IMO) 패턴을 처리하는 방법을 결정하는 데 도움이 되는 몇 가지 지침입니다.

  1. 자주 변경되지 않는 조회 테이블에 대한 빠른 링크만 있으면 됩니다(예:주 및/또는 국가 테이블에 연결되는 주소 테이블), 조회 테이블의 지연 로드 정적 복사본을 유지할 수 있습니다.

  2. 표시 목적으로만 로드하는 데 많은 조인이나 하위 쿼리가 필요한 매우 큰 클래스가 있는 경우 위에서 설명한 것처럼 표시 목적으로 "보기" 또는 "정보" 클래스를 만드는 것이 좋습니다.XInfo 클래스(표시용)가 X 클래스(편집용)보다 훨씬 빠르게 로드되는지 확인하세요.이는 데이터베이스 측에서 뷰를 사용하는 것이 매우 좋은 생각일 수 있는 상황입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top