Skip to content

Repositories

Seong-Ug Steve Jung edited this page Apr 21, 2016 · 4 revisions

처음 말했듯이 저장소(Repository) 는 데이터를 저장하고 저장한 데이터를 이벤트 형태로 변경하는 역할을 하는 Observable이다. 데이터는 Repository.get() 을 통해서 가져올 수 있다.

Simple repositories

Simple RepositoryRepositories 클래스에서 제공하는 함수를 이용하여 만들어진다. 아래의 것들을 골라 쓸 수 있다.

  • static repository 는 같은 값을 저장하지만 어떠한 event도 만들어내지 않는다.
  • mutable repository 는 값을 변경할 수 있고 값이 변경되면 언제든 이벤트를 만들어 낼 수 있다. (Object.equals(Object) 에 의해서...)

일반적으로, 위의 Simple Repository 들은 동작 상태에 상관없이 항상 최신의 값을 저장한다.

Complex repositories

Complex Repository 는 다른 저장소나 Observable 에 반응합니다 (일반적으로 저장소의 이벤트 시작점으로부터 (event source)). 또한 내부 과정에서 전달받은 데이터를 동기/비동기로 다른 데이터로 변경합니다. Repository 에 저장된 데이터는 이벤트에 의해 반응한 최신의 값으로 유지됩니다. 복잡한 과정 중에 Repository 가 inactive 상태가 되면 데이터를 갱신하지 않을 수도 있습니다. 일부 데이터 Consumer 들은 Updatable 에 등록되면 데이터를 처리해서 보여줄 것입니다. Consumer 들이 Repository 를 동작시키지만 최신 데이터를 즉시 전달하지 않을 수 있습니다. 즉 Respoitory 가 event 전달하기 전까진 최신이 아닌 데이터를 바라보고 있을 것입니다.

Agera 는 자연어에 가깝게 Complex Repository 를 정의할 수 있도록 [Reposito Compiler] 제공합니다.