Java设计模式大题练习3

        设计实现一个浏览文件和文件夹的场景。文件有名称和大小,创建一个文件时可以指定文件名和文件大小,其后还可以更改文件名,浏览文件就是将文件的名称和大小属性简单输出。文件夹也有名称和大小,创建一个文件夹时可以指定文件夹名,其后还可以更改文件夹名;创建文件夹时文件夹为空,空文件夹的大小为零;可以将文件和文件夹加到文件夹中去,也可以从文件夹中移除文件和文件夹;文件夹的大小就是该文件夹中所包含的文件大小和子文件夹大小之和,浏览文件夹就是先简单输出文件夹的名称和大小,然后逐个浏览文件夹中所包含的文件和子文件夹。请采取适当的模式进行设计。(作答时可以在较详细地描述设计思路后画出设计类图,也可以简单描述设计思路后直接给出java代码)

正确答案:

经过分析,可以采用组合模式(安全组合模式)结合迭代器模式进行设计(主要是组合模式)。

设计一个component抽象类充当抽象构件角色,component类有一个字符串类型的名称属性和一个带字符串类型的参数的构造方法,其构造方法就是用其参数设置其名称属性的值;component 类还有一个抽象的getsize(获取大小)的方法,该方法的返回值类型为整型;有一个抽象的browse(浏览)方法。

设计一个file(文件)类充当叶子构件角色,file类继承component类。file有一个整数类型的大小属性,file类有一个带一个字符串类型和一个整数类型参数的构造方法,其构造方法先用字符串类型的参数调父类的构造方法设置其名称属性的值,再用整数类型的参数设置其大小属性的值。file 类的getsize方法就是返回其大小属性的值,file的browse方法就是简单输出其名称属性和简单输出其大小属性。

设计一个folder(文件夹)类充当容器角色,在folder类中有一个Arraylist类型的filelist属性用于存放文件夹中的文件和子文件夹,Arraylist中的元素类型是component。folder类有一个带一个字符串类型参数的构造方法,其构造方法就是先调父类的构造方法设置其名称属性的值,再创建一个Arraylist对象并用filelist指向它。folder类有一个add方法用于将一个文件或文件夹加入到文件夹中(该方法带一个component类型的参数,就是将component类型的参数所指的对象加入到filelist里),folder类有一个remove方法用于将移除文件夹中的一个文件或文件夹(该方法带一个component类型的参数,就是将component类型的参数所指的对象从filelist里移除)。folder类的getsize方法的实现就是通过filelist的迭代器(这里用到迭代器模式,Arrylist作为jdk直接支持的容器本身有iterator方法可以直接获取容器的迭代器)来逐个调用文件夹中的文件和子文件夹的getsize方法来获取它们的大小,将文件夹下包含的所有文件和子文件夹的大小求和后就可以得该folder对象的大小了。folder类的browse方法的实现是先简单输出其名称和大小(其大小是通过调用其getsize方法获得的),再通过filelist的迭代器来逐个调用文件夹包含的文件和子文件夹的browse方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值