设计模式之组合模式(Composite 模式)

引入composite模式
在计算机文件系统中,有文件夹的概念,文件夹里面既可以放入文件也可以放入文件夹,但是文件中却不能放入任何东西。文件夹和文件构成了一种递归结构和容器结构。
虽然文件夹和文件是不同的对象,但是他们都可以被放入到文件夹里,所以一定意义上,文件夹和文件又可以看作是同一种类型的对象,所以我们可以把文件夹和文件统称为目录条目,(directory entry).在这个视角下,文件和文件夹是同一种对象。
所以,我们可以将文件夹和文件都看作是目录的条目,将容器和内容作为同一种东西看待,可以方便我们递归的处理问题,在容器中既可以放入容器,又可以放入内容,然后在小容器中,又可以继续放入容器和内容,这样就构成了容器结构和递归结构。
这就引出了我们本文所要讨论的composite模式,也就是组合模式,组合模式就是用于创造出这样的容器结构的。是容器和内容具有一致性,可以进行递归操作。

composite模式的具体实例
我们实现一个实例程序,可以列出文件和文件夹的信息。
自然,根据前文的讨论,我们需要建立三个类,一个文件类,一个文件夹类,同时还要抽象出两种类的共性,新建一个entry类,也就是目录条目类,这个类是实现文件类和文件夹类的一致性的。

我们先简单看一下类图:

在这里插入图片描述
首先我们实现Entry类,这个类表示目录条目的抽象类

package Composite;

public abstract class Entry {
   
    public abstract String getName();
    public abstract int getSize();
    
    public Entry add(Entry entry) throws FileTreatMentException {
   
        throw new FileTreatMentException();
    }
    
    public void printList() {
   
        printList("");
    }
    
    protected abstract void printList(String prefix);
    
    public String toString() {
   
        return getName() + "(" + getSize() + ")";
    }
}

File类是文件类

package Composite;

public class File extends Entry {
   
    
    private String name;
    
    private int size;
    
    public File(String name, int size) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值