有人告訴我「的模式爲構建接受孩子的可變參數,然後數據庫對象的抽象容器暴露了一些孩子的檢查功能,無需重複碼」。必須有一個更好的實現代碼:(
此提示到「count#of children」,「find by identifier」等事情。
爲簡單起見,下面的代碼只有一個來自基本抽象DatabaseObject類型(即名稱)的字段,但真正的代碼有類似「標識符」和一些複雜的元數據查找噱頭。
這個想法當然是有用的我只是看着我開始編碼的東西讓我想吐:如果我繼續沿着這條道路前進,那將會是一個糾纏的科學怪人。任何方式使它成爲體面的Java?任何設計模式參考? (Composite想到...)
前提:要共享的實際功能是有用的,並且實際上適用於任何可能的可嵌套類型(模式有表格,表格有列,有複合索引有子索引等),特別是標識符查找...
...但「必須有更好的方法」。我感覺到裏面的聲音說:「每當你寫這樣的代碼時,都要打在臉上」。
幫助:)
public abstract class DatabaseContainerObject<ChildType extends DatabaseObject>
extends DatabaseObject {
protected List<ChildType> children;
public DatabaseContainerObject(String name, ChildType... children) {
super(name);
this.children = new ArrayList<ChildType>(children.length);
this.children.addAll(Arrays.asList(children));
}
protected List<ChildType> getChildren() {
return Collections.unmodifiableList(children);
}
... count ...
... find ...
... sort ...
... remove ...
...
}
是的顯然的情況下綜合。例如。如果你想在組合中搜索某些東西,首先檢查你是否滿足謂詞(然後返回這個或者某個東西),否則調用find來找所有的孩子。 – Voo