리포지토리 패턴 사용하기
이번에는 리포지토리 인터페이스를 사용하여 리포지토리 클래스 3개에서 상속하는 리포지토리 패턴 예제를 만들어 보겠습니다. 다음 내용을 입력한 후 실행해 보세요.
저장소 패턴 사용: RepositoryPatternDemo.cs
using System;
public interface ITableRepository
{
string GetAll();
}
public class TableInMemoryRepository : ITableRepository
{
public string GetAll()
{
return "인-메모리 데이터베이스 사용";
}
}
public class TableSqlRepository : ITableRepository
{
public string GetAll() => "SQL Server 데이터베이스 사용";
}
public class TableXmlRepository : ITableRepository
{
public string GetAll() => "XML 데이터베이스 사용";
}
class RepositoryPatternDemo
{
static void Main()
{
//SQL, InMemory, XML 등 넘어오는 값에 따른 인스턴스 생성(저장소 결정)
string repo = "SQL"; //여기 값을 SQL, InMemory, XML 중 하나로 변경
ITableRepository repository;
if (repo == "InMemory")
{
repository = new TableInMemoryRepository();
}
else if (repo == "XML")
{
repository = new TableXmlRepository();
}
else
{
repository = new TableSqlRepository();
}
Console.WriteLine(repository.GetAll());
}
}
실행 결과
SQL Server 데이터베이스 사용
string repo 변수에 저장된 값이 SQL, InMemory, XML에 따라 repository 개체가 서로 다른 클래스의 인스턴스로 생성됩니다.
이 예제는 나중에 종속성 주입(의존성 주입(dependency injection)) 개념으로 확장됩니다.