MVPアーキテクチャに関して質問がありますが、これは技術的な質問ではありません。MVPアーキテクチャでWebSocketチャットを行う場所
私はAndroidアプリでチャット(facebookのバックとセカンドのチャットのような)を実装する必要があります。私の質問は、これをMVPにどのように適合させるかです。
私はこれらの(簡体字)のクラスています
public class ChatFragment extends Fragment {
private final ChatFragmentPresenter presenter;
@Override
public void onResume() {
super.onResume();
List<ChatMessage> chatHistory = repository.load(); //dont think fragment should actually interact with repository
displayChatHistory(chatHistory);
}
private void displayChatHistory(List<ChatMessage> chatHistory) {
//displays chat history..
}
}
public class ChatFragmentPresenter {
private final ChatFragment fragment;
}
public class ChatClient {
public interface ChatClientCallback {
void onMessageReceived();
void onMessageSentConfirmed();
}
public void start(ChatClientCallback callback) {
//starts the chat..
}
public void send(String message) {
//sends chat message..
//if successfully sent then onMessageSentConfirmed() is called
}
}
public class ChatRepository {
public interface LoadChatCallback {
List<ChatMessage> onLoadChatSuccess();
void onLoadChatFailed();
}
public void load(GetChatCallback callback) {
// loads saved chat messages..
}
public void save(ChatMessage message) {
//saves chat message..
}
public void clear() {
//deletes all saved chat messages..
}
}
public class ChatMessage {
public ChatMessage(String text, Type type) {
this.text = text;
this.type = type;
}
public final String text;
public final Type type;
public enum Type {FROM_OTHER, FROM_USER}
}
は、だから私の質問は以下のとおりです。ChatClient#start(callback)
を呼び出してチャットを開始する予定です
?
ChatClient
からメッセージを受信し、ChatClient
にメッセージを送信するのは誰ですか?
受信したチャットメッセージをリポジトリに保存する責任は誰にありますか?
onResume()
の間にチャット履歴をリポジトリから読み込む責任は誰にありますか?
プレゼンターはこれをすべて行う必要がありますか?私はセットアップとChatClientを閉じる/取得/すべての検索/保存を取り扱うデータ層のいくつかの種類があった場合好む、および使用可能な形でプレゼンターにだけデータを与えるだろうチャットを開始する予定です