次のクラスを作成しました。
public class AsyncHttpsClientHelper {
public static final int REMOVE_CREDIT_CARD = 1;
public static final int ENABLE_AUTORENEW = 2;
// +10 final ints...
private static AsyncHttpsClientHelper instance = null;
private static Activity activity;
// Some other variables
private AsyncHttpsClientHelper(Context context) {
// Initiate variables
}
public static AsyncHttpsClientHelper getInstance(Context context) {
// Guarantees the same instance for this class (Singleton)
}
public void performNetworkTask(int networkTaskType, String value)
{
switch (networkTaskType)
{
case REMOVE_CREDIT_CARD:
{
CupsLog.d(TAG, "path: " + Consts.ACCOUNT_REMOVE_CREDIT_CARD_PATH);
client.post(Consts.ACCOUNT_REMOVE_CREDIT_CARD_PATH , new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject result) {
try {
CupsLog.d(TAG, Consts.ACCOUNT_REMOVE_CREDIT_CARD_PATH + " -> onSuccess, result: " + result.toString(3));
AccountService.getInstance(activity).pullAccountDetailsFromServer();
Toast.makeText(activity, "Your credit card was removed", Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Throwable arg0) {
CupsLog.d(TAG, "commitPaymentToServer -> onFailure");
BusProvider.getInstance().post(new DialogChangeEvent(DialogChangeEvent.REMOVE_CREDIT_CARD, "failed"));
}
});
break;
}
case ENABLE_AUTORENEW:
{
// Do ENABLE_AUTORENEW logic
}
// +10 cases goes here...
}
}
}
このクラスはまだ完成していないので、アプリケーション全体で実行する他の 10 個のネットワーク呼び出しをここに追加する必要があります。
ネットワーク タスクの 1 つを実行するには、たとえば次の行を実行します。
AsyncHttpsClientHelper.getInstance(this).performNetworkTask(AsyncHttpsClientHelper.COMMIT_COUPON_TO_SERVER, event.getValue());
タスクが終了したら、イベントツールをEvent
使用してを起動し、必要な視覚的変更をアクティビティ/フラグメント レイアウトにコミットします。Square
Bus
質問:私の上司は、これは悪い習慣であり、私がそれを終えるとこのクラスは混乱するだろうと主張しています。さらに彼は、このクラスはばかげたクラスであるべきだと主張しています。彼が知っているのは、AsyncHttpClient
オブジェクトを構成して返すことだけであり、それを使用して関連する 内で https タスクを実行できますActivity
。基本的に彼は、https 呼び出し自体を Activity クラスに配置する必要があると述べています。私はこの方法の方が好きで、私の活動がよりクリーンで読みやすくなると思います。一方、彼は、この方法ではデバッグが難しく、このクラスはコントローラーとビューの機能の一部を組み合わせてはならないと言います。
では、誰が正しいのでしょうか? このようなクラスを作成するのは本当に悪い習慣ですか?