我想實現從服務器獲取XML文檔的工廠模式。 (使用javax.xml.parsers.DocumentBuilder)獲取XML數據
我現在有下面的類,你能給你的意見嗎?這種模式的結構是否有意義? (我問在代碼審查的samequestion但是,如果還沒有任何反饋還)
DocumentGeneratorFactory(抽象工廠)
public interface DocumentGeneratorFactory {
public Document createDocument(String scheme, String authority,
String path, HashMap<String, String> parameters)
throws ParserConfigurationException, SAXException, IOException;
}
ProductDocumentGeneratorFactory(Concreate廠)
public class ProductDocumentGeneratorFactory implements
DocumentGeneratorFactory {
public Document createDocument(String scheme, String authority,
String path, HashMap<String, String> parameters)
throws ParserConfigurationException, SAXException, IOException {
Uri.Builder uri = new Uri.Builder();
uri.scheme(scheme);
uri.authority(authority);
uri.path(path);
Set<Map.Entry<String, String>> set = parameters.entrySet();
for (Map.Entry<String, String> params : set) {
uri.appendQueryParameter(params.getKey(), params.getValue());
}
URL url = new URL(uri.toString());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
return doc;
}
}
請求 (抽象產品)
public abstract class Request {
Document doc;
HashMap<String, String> queryStrings;
abstract void prepareRequest() throws ParserConfigurationException, SAXException, IOException;
}
ProductRequest(產品)
public class ProductRequest extends Request{
ProductDocumentGeneratorFactory DocumentGeneratorFactory;
HashMap<String, String> queryStrings;
public ProductRequest(ProductDocumentGeneratorFactory DocumentGeneratorFactory,HashMap<String, String> queryStrings){
this.DocumentGeneratorFactory = DocumentGeneratorFactory;
this.queryStrings = queryStrings;
}
@Override
void prepareRequest() throws ParserConfigurationException, SAXException, IOException {
doc = this.DocumentGeneratorFactory.createDocument("http", "ip-address", "default.aspx",this.queryStrings);
}
}
在'ProductDocumentGeneratorFactory'中,我沒有看到特定於產品的任何事情。你能詳細說明你在那裏試着做什麼嗎? –
會有不同的網址請求。例如,我將有一個產品,評論,用戶的XML數據...所以我認爲我應該有不同的文檔,並做到這一點。我創建了抽象的DocumentGeneratorFactory。 ProductDocumentGeneratorFactory使用querystrin hashmap創建特定文檔。 (也會有VODDocumentGeneratorFactory,CommentDocumentGeneratorFactory ...) – Talha
然後ProductRequest產品將更便宜的獲得XMl操作的其他部分。例如,這個人會獲取數據並將其解析爲特定的對象。但我還沒有寫這部分。我只是想知道邏輯?或者你對這個結構的方法 – Talha