내가 볼 수있는 일반적인 패턴은 일종의 "원시"데이터 소스 (예 : ADO.NET 또는 )를 인수로 사용 하여 필드를 매핑하는 Mapper패턴 ( DataMapper전적으로 다른 것과 혼동하지 말 것)으로 알려진 패턴 입니다. 비즈니스 / 도메인 개체의 속성 예:DataReaderDataSet
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)"는 데이터베이스에서 가져 오지 않고 어떤 종류의 결과 집합을 객체로 변환하는 반면 패턴은 데이터베이스 액세스 자체를 수행 했다고 생각했다 .