2016-09-03 3 views
2

私は "ドメインエンティティ"を作成するソフトウェアの開発に慣れています。これらのエンティティはドメイン内の他のエンティティにのみ依存します。ドメインデザインのリアクティブプログラミング

のは、私はあなたが見ることができるように、私は戻っていますCityが再びドメインオブジェクトである。このインタフェース

package domain; 

import domain.beans.City; 

public interface CitiesRepository { 
    City get(String cityName);   
} 

があるとしましょう。このCitiesRepositoryの実装はドメイン外で見つけることができ、データベース、httpクライアント、キャッシュデコレータなどに依存することができます。

私は現在リアクティブフレームワークvert.xで作業しています。そのようなモデルを使って私がどのように働き続けることができるかを理解する。私はvert.xの特定の答えを望んでいないが、これを達成する方法を理解するためのパターン/ベストプラクティスがあるかどうかを理解することだけがある。

リアクティブプログラミングではほとんど戻り値はありませんが、発生した後にイベントを消費するコールバック/ハンドラは常にあります。インターフェイスを「リアクティブ」に書き換える必要がありますか?私は自分のドメインのハンドラを「埋める」ために「反応性フレームワーク」のハンドラに対処する必要が実装に考えると

ただ、この例を提供
package domain; 

import domain.beans.City; 

public interface CitiesRepository { 
    void get(String cityName, DomainHandler<City> cityHandler); 
} 

は私にいくつかのいくつかのスパゲティ頭痛を引き起こしました。

リアクティブモデルで作業しているときに、このようなデザインで考えるのを止めるべきですか? Observable/Promiseアプローチを好むべきですか?

任意のヒントは、本当に私は、その後のリポジトリを使用するイベントハンドラがあったと関わってきた反応系では

答えて

0

をいただければ幸いです。

public void SomeEventHandler : IHandle<SomeEvent> { 
public SomeEventHandler(CityRepository repo) {} 
} 

あなたは、あなたの既存のを使用しますハンドラのコード内のリポジトリ:

public void When(SomeEvent event) { 
    var city = _cityRepository.Get(event.CityName); 
// do something with city 
} 

アプリケーションのCompositionRootでは、ハンドラはを通じてイベントを処理するために登録されるだろうどんなメッセージングバス/反応性ストリームなどでもイベントを受信/生成することになる。

だから、私はリポジトリを反応させるのではなく、むしろイベントハンドラを追加して使用するようにします。

関連する問題