Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

Flutter 개발 Story

BLOC 패턴 본문

관련 개념

BLOC 패턴

flutter 개발하자 2021. 2. 9. 15:33

BLOC 패턴이란?

 BLOC 패턴이라 Bussiness Logic Component의 줄임말로 UI와 Bussiness Logic을 분리해 각각 코드의 의존성을 낮추게 하는 디자인이다. Flutter는 상태에 따라 렌더링이 일어나기 때문에, 상태 관리가 매우 중요하다. 즉, BLOC 패턴은 Flutter의 상태 관리를 제어하기 위해 사용된다고 생각하면 된다. 

정리하자면 BLOC은 논리적인 처리를 담당하고, UI는 UI 처리만 담당한다고 보면 된다. 역할을 나눠서 맡은 역할만 할 수 있게 하는 디자인 패턴이라고 볼 수 있다.

 

용어 설명

  • BLOC 객체 - 위젯(UI 객체)으로부터 이벤트를 전달받으면 Respository등으로부터 데이터를 전달받아 Business Logic을 처리하는 객체를 의미한다.
  • Repository - REST API 호출같이 외부로부터 데이터를 갖고 오거나 SQLite, Room, Realm등으로 내부 DB에서 데이터를 갖고 오는 등, 데이터는 다양한 곳에서 오는 데 이들을 추상화해서 데이터 출처와 관계없이 동일 인터페이스로 데이터에 접근할 수 있도록 만드는 것이 Repository이다. 즉, 모든 데이터를 동일 인터페이스로 접근할 수 있게 만들어 주는 것이다.
  • Stream - 파이프와 같은 기능을 한다. 한쪽 끝에서는 값을 넣고, 다른 쪽 끝에서는 리스너가 있어, 해당 리스너가 해당 값을 받는다. 스트림에는 여러 개의 리스너가 있을 수 있는데, 파이프 라인에 값을 넣으면 모든 리스너가 동일한 값을 받는다. 스트림에 값을 넣는 방법은 StreamController를 사용하는 것이다.

BLOC 패턴에서 BLOC 객체와 UI 객체의 관계

BLOC 객체는 UI 객체로부터 이벤트를 전달받으면, Repository등으로부터 데이터를 받아 BusinessLogic을 처리한 후, BLOC 객체를 구독중인 UI 객체들에게 상태를 전달한다. UI 객체는 BLOC 객체로부터 받은 상태를 이용해 화면을 재구성한다. 즉, BLOC은 이벤트와 데이터 흐름을 처리하기 때문에 Reactive Programming을 기본 기술로 사용한다. (Reactive Programming은 데이터 스트림을 비동기적으로 처리하는 기술이다. (ex. rxdart, rxjava, rxkotlin)) 

BLOC의 특징

  • UI에서는 여러 BLOC이 존재할 수 있다.
  • UI에서는 화면에 집중하고, BLOC에서는 Logic에 집중한다.
  • BLOC은 여러 UI에서 구독할 수 있다. -> 재사용이 용의
  • BLOC만을 분리해서 테스트가 가능하다.

 

'관련 개념' 카테고리의 다른 글

Provider 패턴  (0) 2021.02.09
미디어 세션  (0) 2021.01.18
PubSub모델  (0) 2021.01.14
BLE에대하여  (0) 2020.12.02
Comments