【正确答案】(1) abstract (2) Null (3) List (4) childList (5) System.out.println(ifile.printName()
【答案解析】[要点解析] 下面给出程序解析:
(1)abstract class AbstractFile{/*由class File extends AbstractFile和class Folder extendsAbstractFile可知此处应为抽象类。*/
public List<AbstractFile> getChildren(){return (2)Null;}//file类即是树中的叶子节点,它不可能包含子节点,因此应返回空。*/
第(3)空和第(4)空:public (3)List<AbstractFile> getChildren(){return (4)childList;}/*由类AbstractFile中的定义public abstract List<AbstractFile> getChildren();可知此处应填List。由类Folder中定义的list <AbstractFile*> childList;用于存储子目录或文件,可知此处应返回childList的地址,用以获取子目录或文件。*/
(5)System.out.println(ifile.printName());/*此处是遍历文件目录树,然后依次输出。实现打印目录文件树的功能。*/
辅助理解程序的知识点:Composite模式是构造型的设计模式之一,通过递归手段来构造诸如文件系统之类的树型的对象结构;Composite模式所代表的数据构造是一群具有统一接口界面的对象集合,并可以通过一个对象来访问所有的对象(遍历)。
Component(此题中对应AbstractFile)是树型结构的节点抽象,为所有的对象定义统一的接口(公共属性,行为等的定义),提供管理子节点对象的接口方法。
Leaf(此题中对应file)树型结构的叶子节点,是Component的实现子类。Composite(此题中对应folder)是树型结构的枝节点,也是Component的实现子类。