Android代码的Builder模式实现

本文介绍了一个用于添加求购请求的Java类AddDemandRequest。该类继承自MultiLoader泛型类,并实现了具体的参数设置、API调用及JSON解析方法。文章详细展示了如何通过Builder模式构建AddDemandRequest实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.metech.request;

import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.google.gson.JsonArray;
import com.metech.app.Server;
import com.metech.request.action.OnFailSessionObserver2;
import com.metech.request.action.OnLoadObserver2;
import com.metech.request.action.OnParseObserver2;
import com.metech.request.base.MultiLoader;

public class AddDemandRequest extends MultiLoader<Object> {

	public static final int HASH_CODE = AddDemandRequest.class.getSimpleName().hashCode();
	private String sessionId = null;
	private int productCategoryId = 0; //
	private List<String> imageUrls = null;
	private String sizeReq;
	private int numReq;
	private String deliveryTime;
	private String deliveryPlace;
	private int expectedPrice;
	private String memo;

	private AddDemandRequest(Builder builder) {
		super(builder.failSessionObserver, null, builder.loadObserver, builder.parseObserver, false, false);
		this.sessionId = builder.sessionId;
		this.productCategoryId = builder.productCategoryId;
		this.imageUrls = builder.imageUrls;
		this.sizeReq = builder.sizeReq;
		this.numReq = builder.numReq;
		this.deliveryTime = builder.deliveryTime;
		this.deliveryPlace = builder.deliveryPlace;
		this.expectedPrice = builder.expectedPrice;
		this.memo = builder.memo;
		startRequest();
	}

	@Override
	protected Integer parseBody(JSONObject object) throws JSONException {
		Integer value = null;
		if (object.has("demandId")) {	// 求购信息id
			value = Integer.valueOf(object.getInt("demandId"));
		}
		return value;
	}

	@Override
	protected String getApi() {
		return Server.API_ADD_DEMAND;
	}

	@Override
	protected void setParams(JSONObject jsonObject) {
		try {
			jsonObject.put("sessionId", sessionId);
			jsonObject.put("productCategoryId", productCategoryId);
			jsonObject.put("imageUrls", new JSONArray(imageUrls));
			jsonObject.put("sizeReq", sizeReq);
			jsonObject.put("numReq", numReq);
			jsonObject.put("deliveryTime", deliveryTime);
			jsonObject.put("deliveryPlace", deliveryPlace);
			jsonObject.put("expectedPrice", expectedPrice);
			jsonObject.put("memo", memo);
		} catch (JSONException ex) {
			ex.printStackTrace();
		}
	}

	public static class Builder {
		private String sessionId = null;
		private int productCategoryId = 0; //
		private List<String> imageUrls = null;
		private String sizeReq;
		private int numReq;
		private String deliveryTime;
		private String deliveryPlace;
		private int expectedPrice;
		private String memo;
		private OnParseObserver2<? super Object> parseObserver = null;
		private OnLoadObserver2 loadObserver = null;
		private OnFailSessionObserver2 failSessionObserver = null;

		public Builder setSessionId(String sessionId) {
			this.sessionId = sessionId;
			return this;
		}

		public Builder setProductCategoryId(int productCategoryId) {
			this.productCategoryId = productCategoryId;
			return this;
		}

		public Builder setImageUrls(List<String> urls) {
			this.imageUrls = urls;
			return this;
		}

		public Builder setSizeReq(String sizeReq) {
			this.sizeReq = sizeReq;
			return this;
		}

		public Builder setNumReq(int numReq) {
			this.numReq = numReq;
			return this;
		}

		public Builder setDeliveryTime(String deliveryTime) {
			this.deliveryTime = deliveryTime;
			return this;
		}

		public Builder setDeliveryPlace(String deliveryPlace) {
			this.deliveryPlace = deliveryPlace;
			return this;
		}

		public Builder setExpectedPrice(int expectedPrice) {
			this.expectedPrice = expectedPrice;
			return this;
		}

		public Builder setMemo(String memo) {
			this.memo = memo;
			return this;
		}

		public Builder setObserverListener(OnParseObserver2<? super Object> parseObserver,
				OnLoadObserver2 loadObserver, OnFailSessionObserver2 failSessionObserver) {
			this.parseObserver = parseObserver;
			this.loadObserver = loadObserver;
			this.failSessionObserver = failSessionObserver;
			return this;
		}

		public AddDemandRequest build() {
			return new AddDemandRequest(this);
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值