2. InMemoryDatabase 프로젝트에 카테고리를 관리할 수 있는 저장소의 인터페이스를 ICategoryRepository.cs 파일로 만들고, 다음과 같이 코드를 작성합니다. IBreadShop<T> 인터페이스 기능을 그대로 물려받아 사용하기에 ICategoryRepository 인터페이스 기능을 간결하게 유지할 수 있습니다. IBreadShop<T>에 정의되지 않은 새로운 기능을 추가로 구현할 때는 이곳에 메서드 시그니처를 작성합니다. 예를 들어 로그를 남기는 기능을 설계한다면 void Log(string message); 형태의 코드를 추가합니다.
//ICategoryRepository.cs using Dul.Data; namespace InMemoryDatabase { ///<summary> ///리포지토리 인터페이스 => BREAD SHOP 패턴 사용 ///</summary> public interface ICategoryRepository : IBreadShop<Category> { //Empty } }
리포지토리 인터페이스는 리포지토리 클래스에서 사용할 멤버에 대한 시그니처를 담아 두는 곳입니다. 이렇게 만들어진 리포지토리 인터페이스는 실제로 코드가 구현되는 하나 이상의 리포지토리 클래스에서 상속받아 사용합니다. 이 실습에서는 IBreadShop<T> 제네릭 인터페이스에 미리 정의한 Browse 메서드부터 Paging 메서드까지 그대로 사용하기에 추가 내용은 구현하지 않을 뿐입니다. IBreadShop<T>에 Category 클래스를 넘겨주어 Category 모델 클래스에 대한 CRUD를 정의해서 사용할 수 있습니다.