说,我有 DataObject 类型的 Json 解析器类,如下所示:
class JsonDataParser{
public DataObject parseData(String data){
// Parse data
return dataObject;
}
}
现在我必须连接到服务器才能获取 Json,所以我有这个:
class DataRetriever{
public String getData(){
// Get data from server using URL
return jsonDataString;
}
}
问题是,在主类中编写如下代码更好吗(方法-A)
DataObject d = new JsonDataParser().parseData(new DataRetriever().getData());
或者修改 DataRetriever 以在内部包含 Json 解析(方法-B),如下所示:
class DataRetriever{
public DataObject getData(){
// Get data from server using URL
return new JsonDataParser().parseData(jsonDataString);
}
}
结果在这两种情况下都是相同的,但从概念上讲,使用 Method-A 还是 Method-B 编码更好?
我通常会创建一个控制器类来遵循 Method-A,但我不确定这是否有效。
编辑:
事实上,我正在考虑在解析 Json 时使用 GenericType 和 Interface。所以我准备了以下内容:
public interface IJsonParser<T> {
public T parseJSON(String jsonString);
public T parseJSON(JSONObject jsonObject);
}
然后将其添加到 DataRetriever 的构造函数中,如下所示:
class DataRetriever<T>{
private IJsonParser<T> parser;
public DataRetriever(IJsonParser<T> parser){
this.parser = parser;
}
public DataObject getData(){
// Get data from server using URL
return new JsonDataParser().parseData(jsonDataString);
}
}
最终,我正在考虑允许多种类型的解析器,这样每次我们都可以提供自己的解析器来增加它的灵活性。这被认为是某种渎职行为吗?