組合模式
定義
- 對組合執行操作如同對其中的每一個元素進行操作
- 引申
- 組合與元素實現相同的操作接口
適用場景
- 可以用樹形結構抽象的業務場景,元素表示葉節點,組合對象表示非葉節點
- 如:公司組織架構
- 操作系統文件目錄組織結構
- 元素對象和組合對象具有相同的對外接口
- 因此用戶不知道他操作的組合對象還是元素對象
使用方式
interface Action {
void doA();
}
class AComposite implements Action {
// elements集合中即包含組合對象,也包含元素對象
private Collection<Action> elements;
@Override
public void doA() {
// 對於組合對象,遞歸實現doA
elements.forEach(ele->doA());
}
}
class ActionImpl implements Action {
@Override
public void doA() {
......
}
}