阅读下列说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单中包含的可能是一个菜单项(直接对应某个功能),也可能是一个子菜单,现在采用组合(composite)设计模式实现层叠菜单,得到如图6-2所示的类图。
import java.util.*;
abstract class MenuComponent { // 构成层叠菜单的元素
(1) String name; // 菜单项或子菜单名称
public void printName() {
System.out.println(name);
}
public (2);
public abstract boolean removeMenuElement(MenuComponent element);
public (3);
}
class MenuItem extends MenuComponent {
public MenuItem(String name) {
this.name = name;
}
public boolean addMenuElement(MenuComponent element) {
return false;
}
public boolean removeMenuElement(MenuComponent element) {
return false;
}
public List<MenuComponent> getElement() {
return null;
}
}
class Menu extends MenuComponent {
private (4);
public Menu(String name) {
this.name = name;
this.elementList = new ArrayList<MenuComponent>();
}
public boolean addMenuElement(MenuComponent element) {
return elementList.add(element);
}
public boolean removeMenuElement(MenuComponent element) {
return elementList.remove(element);
}
public List<MenuComponent> getElement() {
return elementList;
}
}
class CompositeTest {
public static void main(String[] args) {
MenuComponent mainMenu = new Menu("Insert");
MenuComponent subMenu = new Menu("Chart");
MenuComponent element = new MenuItem("On This Sheet");
(5);
subMenu.addMenuElement(element);
printMenus(mainMenu);
}
private static void printMenus(MenuComponent ifile) {
ifile.printName();
List<MenuComponent> children = ifile.getElement();
if (children == null) return;
for (MenuComponent element:children) {
printMenus(element);
}
}
}
【答案】
(1) protected
(2) abstract boolean addMenuElement(MenuComponent element);
(3) abstract List<MenuComponent> getElement();
(4) ArrayList<MenuComponent> elementList
(5) mainMenu.addMenuElement(subMenu);