사용자, 제품, 송장 및 주문과 같이 모델에 EF를 사용하는 다양한 엔터티가 있다고 가정합니다.
엔티티가 사전 결정된 세트에 속하는 응용 프로그램에서 엔티티 객체의 요약을 인쇄 할 수있는 사용자 정의 컨트롤을 작성 중입니다.이 경우 사용자 및 제품 요약을 요약 할 수 있다고 말합니다.
요약에는 모두 ID와 설명 만 포함되므로 이에 대한 간단한 인터페이스를 만듭니다.
public interface ISummarizableEntity {
public string ID { get; }
public string Description { get; }
}
그런 다음 해당 엔터티에 대해이 인터페이스를 구현하는 부분 클래스를 만듭니다.
public partial class User : ISummarizableEntity
{
public string ID
{
get{ return UserID.ToString(); }
}
public string Description
{
get{ return String.Format("{0} {1} is from {2} and is {3} years old", FirstName, LastName, Country, Age); }
}
}
public partial class Product: ISummarizableEntity
{
public string ID
{
get{ return ProductID.ToString(); }
}
public string Description
{
get{ return String.Format("{0} weighs {1}{2} and belongs in the {3} department", ProductName, WeightValue, WeightUnit, Department); }
}
}
이 방법으로 내 사용자 제어 / 부분보기는 ISummarizableEntity 컬렉션에 바인딩 할 수 있으며 소스에 전혀 관심이 필요하지 않습니다. 인터페이스를 데이터 유형으로 사용해서는 안되지만 그보다 더 많은 정보를 얻지 못했다고 들었습니다. 내가 알 수있는 한, 인터페이스는 일반적으로 동작을 설명하지만 속성은 getters / setters의 구문 설탕이므로 속성을 사용하는 것은 그 자체로 반 패턴이 아닙니다.
구체적인 데이터 유형을 만들고 엔터티에서 해당 유형으로 매핑 할 수는 있지만 이점을 볼 수는 없습니다. 엔터티 개체를 추상 클래스에서 상속하도록 설정 한 다음 속성을 정의 할 수 있지만 여러 상속을 가질 수 없으므로 엔터티를 더 이상 사용하지 않도록 잠급니다. 원하는 경우 객체를 ISummarizableEntity로 사용할 수 있습니다 (명확하게 인터페이스의 이름을 바꿉니다)
내가 생각하는 솔루션은 유지 관리 가능하고 확장 가능하며 테스트 가능하며 상당히 강력합니다. 반 패턴을 볼 수 있습니까?
EntitySummary
가지고User
있고Product
각각과 같은 방법 을 갖는 것보다 이것을 선호하는 이유가public EntitySummary GetSummary()
있습니까?