2009-04-07 6 views
0

저는 풍부한 도메인 모델을 가지고있는 프로젝트에 참여하고 있습니다.'백 - 레퍼런스'속성은 어떻게 지정합니까?

일부 수업에는 다른 유형의 컬렉션이 있고 다른 유형에는 '소유자'를 나타내는 속성이 있습니다.

public class Product 
{ 
    private IList<ProductPrice> _prices = new List<ProductPrice>(); 

    public void AddPrice(ProductPrice price) 
    { 
     price.Product = this; 
     _prices.Add (price); 
    } 
} 

public class ProductPrice 
{ 
    public DateTime ValidationDate {get; set;} 
    public Decimal Price {get; set;} 
    public Product Product {get; set;} 
} 

질문은 : 당신이 ProductPrice 클래스의 '제품'속성에 대한 선호합니까 어떤 이름 이 때문에 코드 예제 도움이 될, 어쩌면 조금 난해한 소리?

당신은 그것을 이름겠습니까 : - 제품을 (지금처럼) - 소유자 -에 BelongsTo - 뭔가?

답변

2

제품 - 모호성이 없으며 이름 지정이 일관됩니다. - 제품은 제품을 어디에나 유지합니다. 외부에서 속성에 액세스, 내가 이것을 가지고 원하는 경우

:이보다 더

price.Product.Name 

:

price.Owner.Name 
1

Parent은 내가 종종 도움이되는 상당히 일반적인 용어이지만 Product도 완벽하게 작동합니다.

+0

을 나는 부모가 어쩌면 너무 일반적인, 충분히 설명하지 찾을 수 있습니다. 제품은 괜찮지 만 어떤 경우에는 'BelongsTo'가 더 좋습니다. 그렇다면 나는 다음과 같은 생각을한다. –

2

제품.

이처럼 많은 클래스가 있고 일반적으로 하위 참조를 따르고, 추상 메소드 parent()가있는 HasParent 인터페이스에서 상속 받고 부모가 인터페이스 Parent를 상속받는 경우. 그러나 객체 그 래프를 따르거나 캐스팅 한 다른 것들은 부모님이 할 수있는 일이별로 없습니다.

편집 : 사실, 저를 고치도록하겠습니다. 저는 세미 복합 객체 그래프를 가지고있는 프로젝트에서 일했고, 약간의 계획과 요구 사항의 변화로 인해 때때로 그래프를 통해 관련 객체에서 데이터를 가져와야했습니다. ComponentCost를 부모로, 그 부모 항목에 대한 비용, 그 자식 CustomsInfo에 대한 자식 ComponentCustomsInfo에 대한 조회 테이블 DutyCalculation에 대한 비용. (예, 원래 디자인을하지 않았으므로 나를 싫어하지 마십시오.)

parent() 메서드를 사용하면 약간 더 일반적인 것으로 만들 수 있습니다. (결국에는 열거 형 컬렉션 (Java enums, 그래서 싱글 톤 클래스)을 사용하여 그래프를 가로 질러 타입 안전하고 심지어 우아하게 처리했습니다. 그러나 부모를 갖는 것이 더 간단하게 구현했을 것입니다.)

관련 문제