我有一個困境,需要我一直在想,但仍然沒有想出如何有效地和有效代碼(設計)它。代碼設計模式結構
我有得到3基於文本的格式返回對象數據:JSON,XML,ATOM。在JSON中,數據可以是JSON對象或JSON數組。 XML和ATOM是xml。
基於上述3種格式,我要創建的對象(假設A,B,C,d,E)。我想有一個Builder模式來產生這些對象的,所以我Interface Builder的是:
public interface Builder<T, E, A> { //Where E = Element, A is Element array, this is useful for JSON
public T create(E element);
public T[] create(A array);
}
public class ABuilder implements Builder<A, JSON, JSONArray> {
public A create(JSON json) {...}
public A[] create(JSONArray array) {...}
}
的問題是,我想創建一個動態的工廠/另類的設計,可以創建基於格式對象模式。 ...
即我想要一個功能,這樣,我可以做
public class Resource {
public A getA(String formatString) {
return new Something().createA(formatString); //or something better....
}
}
你有沒有努力使這個問題成爲可能沒有更好的辦法?請記住,所有這些都基於3種可能的格式。目標是根據格式動態生成對象,而不必擔心格式結構。
我認爲同樣的事情。我試圖得到的是基於格式,例如的JSON策略,我可以潛在地獲得一個JSON陣列(其開始和以'['和']'分別或JSON對象,其開始和結束與'分別一個'{'和'}結束時)。 XML本質上可以有一個數組或一個對象(由元素名稱區分)。我認爲建築師對這種情況更好,但與戰略一起使用時不會是最佳的。你得到我的漂移? – 2010-09-15 21:11:09
當您有一個複雜的構建對象的過程時,構建器模式很有用,有幾種不同的實現。既然你沒有描述你構建的對象的內部結構,我真的不知道它是否有用。我同意它也是一個有效的方向 - 你可以有具體的建造者爲對象的每個部分是知道如何處理JSON,XML等\ – Ami 2010-09-16 12:42:19
無論您使用的策略或生成器最重要的事情是,你保持打開/關閉的原則,而且您的設計對於未來的變化非常靈活,並且也足夠封裝,以便外部組件在使用時不會受到影響。 – Ami 2010-09-16 12:43:12