<Flutter> Repository에 대해

반응형

Repository란 데이터에 액세스하는 방법을 추상화한 디자인 패턴입니다.
애플리케이션에서 데이터를 저장하고 검색하기 위해 사용되며, 일반적으로 애플리케이션의 비즈니스 로직을 데이터 소스와 분리합니다.
Repository 패턴을 사용하면 데이터 소스(예: 웹 서비스, 로컬 데이터베이스 등)를 변경하더라도 애플리케이션의 로직에 큰 영향을 미치지 않습니다.

Flutter에서 Repository를 만드는 방법을 Firebase와 함께 해보겠습니다.

 

먼저 Repository 인터페이스를 정의합니다.

 

abstract class UserRepository {
  Future<List<User>> getUsers();
}

 

 

데이터 소스를 선택하고, 이를 사용하여 Repository 인터페이스를 구현합니다. 예를 들어, 아래 코드는 Firebase를 사용하는 UserRepository를 구현한 것입니다.

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:your_app/models/user.dart';
import 'package:your_app/repositories/user_repository.dart';

class FirebaseUserRepository implements UserRepository {
  final userCollection = FirebaseFirestore.instance.collection('users');

  @override
  Future<List<User>> getUsers() async {
    final querySnapshot = await userCollection.get();
    return querySnapshot.docs.map((doc) => User.fromDocument(doc)).toList();
  }
}

 


이제 애플리케이션의 비즈니스 로직에서 Repository를 사용하여 데이터에 액세스할 수 있습니다.


class UserController {
  final UserRepository userRepository;

  UserController({required this.userRepository});

  Future<List<User>> fetchUsers() {
    return userRepository.getUsers();
  }
}

이상으로, 애플리케이션 내에서 데이터를 저장하고 검색하는데 사용되는 Repository 패턴을 사용하였습니다.

이렇게 함으로써 언제든지 데이터 소스를 변경할 수 있고 앱 로직에는 큰 영향을 끼치지 않습니다.

Designed by JB FACTORY