기본 3 층 디자인을 사용하고 있습니다. 유연성 (및 테스트)을 위해 데이터 레이어를 추상화하고 코드에서 구체적인 클래스를 지정하기를 원했습니다. 그러나, 어떻게 이것을 비즈니스 객체에 전달해야합니까?n-tier 디자인 - 데이터 검색 객체를 전달하는 가장 좋은 방법
abstract class IDataLayer
{
PersonData GetPerson(int); //PersonData would be a row of data from a table for example
JobData[] GetJobs(int);
void UpdatePerson(PersonData);
}
class ConcreteDataLayerSQL : IDataLayer
{
...
}
class ConcreteDataLayerXML : IDataLayer
{
...
}
class PersonBAL
{
void PersonBAL(personId)
{
//What goes here?
}
JobBAL[] GetJobs()
{
//What goes here?
}
}
class Program
{
static void Main()
{
person = new PersonBAL(1);
}
}
그래서 문제가 어떻게 PersonBAL이 ConcreteDataLayer 사용할 알고 않습니다됩니다 예를 들면 : (의사 코드)입니까? 몇 가지 옵션 중 하나를 생각하고 있습니다.
1 : 구체적인 데이터 레이어를 사람에게 전달합니다. 이것은 데이터 레이어 (새로운 PersonBAL (IDataLayer, int), 새로운 JobBAL (IDataLayer, int) 등)와 상호 작용해야하는 새로운 클래스를 추가하기 시작할 때 고통스러워집니다.
2 : 정적 사용할 데이터 영역을 보유하고있는 객체 (읽기 : 전역 변수)
다른 아이디어?
용어에 대해 명확히 설명해 주셔서 감사합니다. 문제 해결을위한 프레임 워크를 얻는 것보다 더 나은 솔루션을 원합니다. 프레임 워크가 문제를 어떻게 처리합니까? –