내가 볼 수있는 일반적인 패턴은 일종의 "원시"데이터 소스 (예 : ADO.NET 또는 )를 인수로 사용 하여 필드를 매핑하는 Mapper
패턴 ( DataMapper
전적으로 다른 것과 혼동하지 말 것)으로 알려진 패턴 입니다. 비즈니스 / 도메인 개체의 속성 예:DataReader
DataSet
class PersonMapper
{
public Person Map(DataSet ds)
{
Person p = new Person();
p.FirstName = ds.Tables[0].Rows[0]["FirstName"].ToString();
// other properties...
return p;
}
}
아이디어는 Gateway / DAO / Repository / etc입니다. 반환되기 전에 매퍼를 호출하므로 기본 데이터 컨테이너에 비해 풍부한 비즈니스 개체를 얻게됩니다.
그러나 이것은 동일하지는 않지만 도메인 패턴을 구성하고 반환하는 팩토리 패턴 (DDD 용어에서는 어쨌든)과 관련이있는 것 같습니다. Wikipedia는 다음과 같이 말합니다 : DDD 팩토리 :
팩토리 : 도메인 객체를 생성하는 메소드는 대체 구현을 쉽게 교환 할 수 있도록 특수 팩토리 객체에 위임해야합니다.
그 견적에서 내가 생각할 수있는 유일한 차이점은 DDD 스타일 팩토리를 매개 변수화 할 수 있다는 것입니다. 필요한 경우 (예 : BusinessCustomer 대 ResidentialCustomer) "매퍼"가 특정 클래스에 입력되면 특수 유형의 객체를 반환 할 수 있습니다 그리고 단지 번역을한다.
이 두 패턴 사이에 차이점이 있습니까? 아니면 본질적으로 다른 이름을 가진 동일한 것입니까?
DataMapper
이 "매퍼 (Mapper)"는 데이터베이스에서 가져 오지 않고 어떤 종류의 결과 집합을 객체로 변환하는 반면 패턴은 데이터베이스 액세스 자체를 수행 했다고 생각했다 .