因为是最近才开始学习的java,虽然一直在思考继承和组合的优劣问题,但因为c++开发时间比较长,对这方面的考虑没有太清楚,导致前段时间写的几个通用类使用了继承方式实现,后面发现,调整版本的时候带来了不好问题;
因为使用的dubbo的服务,服务实现与调用是分开实现的,但实现方的实体结构变化也比较多,主要是数据库设计的问题,另外就是对业务还不是很清楚;这里真想感叹一句,传统公司做IT,需求变更还真是频繁。综合考虑还是使用两个继承JSONObject的类JSONRequest, JSONResponse,都是继承自JSONObject,前期人少,JAVA又没有么私有继承,后面人多,这个两个对象就用得比较随意,导致接口数据就五花八门,现在来想,一开始就不应该使用继承的;
新的JSONResquest使用了组合,使用起来和原来是一样的,因为中间出现了一些不规范的调用,花费了一些时间调整,基本定稿:
package com.etong.frame.service; import java.io.Serializable; import com.alibaba.fastjson.JSON; public class JSONRequest implements Serializable { private static final long serialVersionUID = 2L; public JSONRequest() { public JSONRequest(String text) { public <T> JSONRequest(String key, T value) { public JSONRequest(Map<? extends String, ? extends Object> data) { public <T> JSONRequest(T data) { public void put(String key, Object value) { public void putAll(Map<? extends String, ? extends Object> data) { public boolean containsKey(String key) { public <T> T get(String key, Class<T> clazz) { public Integer getInteger(String key) { public int getIntValue(String key) { public String getString(String key) { public Boolean getBoolean(String key) { public boolean getBooleanValue(String key) { public Double getDouble(String key) { public double getDoubleValue(String key) { public Float getFloat(String key) { public float getFloatValue(String key) { public <T> T to(Class<T> clazz) { public void from(String text) { public void from(Map<String, ?> map) { public JSONObject toJSONObject() { public String toString() { public String toJSONString() { public JSONObject getJSONObject(String key) { public JSONArray getJSONArray(String key) { |
JSONResponse 的重构没那么顺利,主要是因为在webservice层,FastJsonMessageConvertor把dataJson直接 转换成了jSONObject这个字段,最后还只能重写这个类,悲剧。
(这是个悲剧,原来我提供了getJSONObject这个方法,导致它在序列化时,将这个对象序列化成了jSONObject,原来以为它会调用toString方法,结果发现没有调用,@@,理解有误)
package com.etong.frame.service; import java.io.Serializable; import com.alibaba.fastjson.JSON; public class JSONResponse implements Serializable { private static final long serialVersionUID = 1L; Integer code; JSONObject dataJson = new JSONObject(); private static final Integer SUCCEED = 0; private String getToast(int err) { public JSONResponse() { public <T> JSONResponse(T data) { public JSONResponse(int error, String msg) { public void error(int code, String msg) { /** /** public <T> T get(String key, Class<T> clazz) { /** /** public <T> void put(String key, T data) { /** public <T> void append(T data) { public <T> void append(String key, T data) { if (data instanceof Serializable) { /** /** public Integer getCode() { public String getMsg() { public String getToast() { public String toJSONString() { public String toString() { public boolean succeed() { |