head first---------composite design pattern (三)

2014-11-24 10:14:31 · 作者: · 浏览: 2
"Pasta",
"Spaghetti with Marinara Sauce, and a slice of sourdough bread",
true, 3.89));
// add menuItem to dinerMenu
dinerMenu
.add(new MenuItem("Pasta", "Spaghetti with Marinara", true, 33));
// add menu to menu
dinerMenu.add(dessertMenu);
// add menuItem to dessertMenu
dessertMenu.add(new MenuItem("Apple Pue",
"Apple pie with a flakey crust", true, 13));
//add MenuItem to cafeMenu
cafeMenu.add(new MenuItem(
"Veggie Burger and Air Fries",
"Veggie burger on a whole wheat bun, lettuce, tomato, and fries",
true, 3.99));
cafeMenu.add(new MenuItem("Soup of the day",
"A cup of the soup of the day, with a side salad", false, 3.69));
cafeMenu.add(new MenuItem("Burrito",
"A large burrito, with whole pinto beans, salsa, guacamole",
true, 4.29));
//add coffeeMenu to cafeMenu
cafeMenu.add(coffeeMenu);
//add MenuItem to cafeMenu
coffeeMenu.add(new MenuItem("Coffee Cake",
"Crumbly cake topped with cinnamon and walnuts", true, 1.59));
coffeeMenu.add(new MenuItem("Bagel",
"Flavors include sesame, poppyseed, cinnamon raisin, pumpkin",
false, 0.69));
// add all menu to allMenus
Waitress waitress = new Waitress(allMenus);
// waitress.print();
waitress.printVegetarianMenu();
}
}
package com.clark.compositpattern;
import java.util.Iterator;
public class NullIterator implements Iterator {
public Object next() {
return null;
}
public boolean hasNext() {
return false;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
package com.clark.compositpattern;
import java.util.Iterator;
/**
* Waitress class
* @author Administrator
*
*/
public class Waitress {
//Waitress only know all menu
MenuComponent allMenus;
public Waitress(MenuComponent allMenus){
this.allMenus=allMenus;
}
public void print(){
allMenus.print();
}
public void printVegetarianMenu() {
Iterator iterator = allMenus.createIterator();
System.out.println("\nVEGETARIAN MENU\n----");
while (iterator.hasNext()) {
MenuComponent menuComponent =
(MenuComponent)iterator.next();
try {
if (menuComponent.isVegetarian()) {
menuComponent.print();
}
} catch (UnsupportedOperationException e) {}
}
}
}