Java设计模式(七)--组合模式

简介

组合模式就是通过将单个对象和组合对象用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。

概述图

组合模式.png

从上面的图能看出是一个树结构,并且就是我们电脑中的文件夹,而每个文件夹中包含着文件夹、图片、文本等,文件夹将这些对象包含着并表示成一个整体的结构。

结构树

public interface Tree {

    public void show();

}

结构树主要是统一树中的对象的行为方法,具体行为由实现的类来决定,结构树也可以是抽象类,使用抽象类的时候,可以将一些共用方法放在抽象类中,由子类去实现具体的抽象方法。

图片

public class Image implements Tree{

    public void show() {
        System.out.println("图片");
    }

}

文本

public class Text implements Tree{

    public void show() {
        System.out.println("文本");
    }

}

文件夹

public class Document implements Tree{

    public ArrayList<Tree> list = new ArrayList<>();

    public void add(Tree tree){
        list.add(tree);
    }

    public void show() {
        System.out.println("文件夹");
        for(Tree tree: list){
            tree.show();
        }
    }

}

从上面的代码能看出文件夹、图片、文本类都实现了结构树并重写了结构树中的show方法,主要还是看文件夹类中的代码,文件夹类中的list主要是存放当前文件夹下所拥有的一些文件对象(文件夹、图片、文本),而show方法则是循环处理文件夹中的文件对象。

测试

public void Combination(){
    // 文件夹1
    Document document1 = new Document();
    // 文件夹2
    Document document2 = new Document();
    // 文件夹3
    Document document3 = new Document();
    // 图片1
    Image image1 = new Image();
    // 图片2
    Image image2 = new Image();
    // 文本1
    Text text1 = new Text();
    // 文本2
    Text text2 = new Text();
    document1.add(document2);
    document1.add(image1);
    document1.add(text1);
    document2.add(image2);
    document2.add(document3);
    document3.add(text2);
    document1.show();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值