您的位置:首页 > 编程语言 > Java开发

java组合模式(Composite)-结构性

2016-07-04 15:40 651 查看

意图

组合模式(合成模式)又叫部分-整体模式。合成模式将对象组织成树结构,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。

文件系统

比如,一个文件系统就是一个典型的组合模式系统。文件系统是一个树结构,树的节点有两种,一种是树枝节点(目录),一种是树叶节点(文件)。显然,可以把目录和文件当做同一种对象同等对待和处理。这也就是组合模式的应用。



类图与角色(安全式组合模式)



构建接口(Component):参加组合的对象的公共接口。

树叶构件(Leaf):代表参加组合的没有下级子对象的对象。

树枝构建(Composite):代表参加组合的有下级子对象的对象。

实例

//构件接口
interface Resource{//资源
public int getSize();
}
//树叶构件
class File implements Resource{//文件
private String name;
private int size;
public File(String name,int size){
this.name=name;
this.size=size;
}
@Override
public int getSize(){
System.out.println("文件"+name+"大小:"+size);
return this.size;
}
}
//树枝构件
class Directory implements Resource{
private String name;
private List<Resource> resources=new ArrayList<Resource>();
public Directory(String name){
this.name=name;
}
@Override
public int getSize(){
int size=0;
for(Resource r:resources){
size+=r.getSize();
}
System.out.println("文件夹"+name+"大小:"+size);
return size;
}
public void add(Resource r){
resources.add(r);
}
public void remove(Resource r){
resources.remove(r);
}
public List<Resource> getResourcess(){
return resources;
}
}
class test  {
public static void main (String[] args) throws java.lang.Exception{
Directory diskC=new Directory("diskC");
File boot=new File("boot.ini",10);
diskC.add(boot);
Directory programFiles=new Directory("programFiles");
File qq=new File("qq.data",200);
programFiles.add(qq);
diskC.add(programFiles);
Directory windows=new Directory("windows");
File explore=new File("explore.exe",300);
windows.add(explore);
Directory config=new Directory("config");
File qqConfig=new File("qqConfig.xml",3);
config.add(qqConfig);
windows.add(config);
diskC.add(windows);
System.out.println("C盘大小为:"+diskC.getSize());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: