迭代器模式
迭代器模式提供一種方法順序訪問一個聚合對象中的各個元素璧亮,而不是暴露其內部的表示。
組合模式允許你將對象組合成樹形節(jié)后來表現“整體/部分”層次結構。
組合能讓客戶以一致的方式處理個別對象以及對象組合搂蜓。
實例解析:
已知有早餐和晚餐兩種菜單顽照,早餐菜單采用ArrayList實現由蘑、晚餐菜單用數組實現。現在需要合并兩種菜單
請使用迭代器模式來演示菜單的顯示代兵。
設計類圖:
Paste_Image.png
主函數代碼:
public class Test {
public static void main(String[] args) {
Menu breakfastMenu = new BreakfastMenu();
Menu dinerMenu = new DinerMenu();
Waitress waitress = new Waitress(breakfastMenu, dinerMenu);
waitress.printMenu();
}
}
組合模式
現在又有一個咖啡廳的菜單尼酿,采用Hashtable實現。試整合菜單植影。
設計圖
主函數代碼:
public class Test {
public static void main(String[] args) {
MenuComponent pancakeHouseMenu = new Menu("pancakeHouseMenu", "Breakfast");
MenuComponent dinnerMenu = new Menu("dinnerMenu", "lunch");
MenuComponent cafeMenu = new Menu("cafeMenu", "cafe");
MenuComponent dessert = new Menu("dessertMenu", "dessert");
MenuComponent allMenus = new Menu("all menus", "all menus combined");
allMenus.add(pancakeHouseMenu);
allMenus.add(dinnerMenu);
allMenus.add(cafeMenu);
dinnerMenu.add(new MenuItem(
"dinner1", "dinner1 description", true, 1.111
));
dinnerMenu.add(dessert);
dessert.add(new MenuItem(
"dessert2", "dessert2 description", true, 2.22
));
Waitress waitress = new Waitress(allMenus);
waitress.printMenu();
}
}
設計原則
- 一個類應該只有一個引起變化的原因裳擎。