1.是什么
組合模式廊镜,將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性腐缤。掌握組合模式的重點是要理解清楚 “部分/整體” 還有 ”單個對象“ 與 "組合對象" 的含義贱鄙。 組合模式可以讓客戶端像修改配置文件一樣簡單的完成本來需要流程控制語句來完成的功能。 經(jīng)典案例:系統(tǒng)目錄結構,網(wǎng)站導航結構等。
2.有什么用
組合模式讓你可以優(yōu)化處理遞歸或分級數(shù)據(jù)結構。有許多關于分級數(shù)據(jù)結構的例子型宝,使得組合模式非常有用武之地。關于分級數(shù)據(jù)結構的一個普遍性的例子是你每次使用電腦時所遇到的:文件系統(tǒng)絮爷。文件系統(tǒng)由目錄和文件組成趴酣。每個目錄都可以裝內(nèi)容。目錄的內(nèi)容可以是文件略水,也可以是目錄价卤。按照這種方式,計算機的文件系統(tǒng)就是以遞歸結構來組織的渊涝。如果你想要描述這樣的數(shù)據(jù)結構慎璧,那么你可以使用組合模式Composite。
3.怎么用
示例包含子菜單的菜單類跨释,是一個樹形結構胸私,每一層都可以當做一個菜單來對待。
public interface IMenu {
void showMenu();
}
import java.util.List;
public class Menu implements IMenu {
private String name;
public Menu(String name) {
this.name = name;
}
private List<IMenu> childMenu;
@Override
public void showMenu() {
System.out.println(this.name);
}
/**
* @return the childMenu
*/
public List<IMenu> getChildMenu() {
return childMenu;
}
/**
* @param childMenu
* the childMenu to set
*/
public void setChildMenu(List<IMenu> childMenu) {
this.childMenu = childMenu;
}
}