迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。
组合模式允许你将对象组合成树形节后来表现“整体/部分”层次结构。
组合能让客户以一致的方式处理个别对象以及对象组合。
实例解析:
已知有早餐和晚餐两种菜单,早餐菜单采用ArrayList实现、晚餐菜单用数组实现。现在需要合并两种菜单
请使用迭代器模式来演示菜单的显示。
设计类图:
主函数代码:
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();
}
}
设计原则
- 一个类应该只有一个引起变化的原因。