码迷,mamicode.com
首页 > 编程语言 > 详细

java设计模式 GOF23 09 组合模式

时间:2016-03-27 23:47:59      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

一.组合模式简介

  把整体和部分的关系用树形结构表示,从而可以统一处理。

二.组合模式实现细节

  1)抽象构建:定义叶子和容器的共同特点。

  2)叶子:没有子节点

  3)容器:有容器的特征,可以包含子节点(一般实现的时候在这里添加容器存放子节点)

三.简单代码实现

package com.lz.combination;

import java.util.ArrayList;
import java.util.List;


/*
 * 抽象构建
 */
public interface IComponent {
    void op();
}

/*
 * 叶子构件
 */
interface ILeaf extends IComponent {
    @Override
    public void op();
}

/*
 * 容器构件
 */
interface IComposite extends IComponent {
    @Override
    public void op();
}

class Leaf implements ILeaf {
    private String name;
    
    public Leaf(String name) {
        super();
        this.name = name;
    }

    @Override
    public void op() {
        System.out.println("查杀"+this.name+"文件");
    }
    
}

/*
 * 容器实现类中包含存放子节点
 */
class Composite implements IComposite {
    
    private String name;
    
    public Composite(String name) {
        super();
        this.name = name;
    }

    List<IComponent> list = new ArrayList<IComponent>();
    
    public void add(IComponent i) {
        list.add(i);
    }
    
    public void delete(int index) {
        list.remove(index);
    }
    
    public IComponent get(int index) {
        return list.get(index);
    }
    
    @Override
    public void op() {
        System.out.println("查杀"+this.name+"目录");
        for ( IComponent i : list) {
            i.op();
        }
    }
}
package com.lz.combination;

/*
 * 组合模式测试类
 */
public class Test {
    public static void main(String[] args) {
        Leaf l1 = new Leaf("文件1");
        Leaf l2 = new Leaf("文件2");
        Leaf l3 = new Leaf("文件3");
        Leaf l4 = new Leaf("文件4");
        Leaf l5 = new Leaf("文件5");
        Leaf l6 = new Leaf("文件6");
        Composite c1 = new Composite("目录1");
        Composite c2 = new Composite("目录2");
        c2.add(l4);
        c2.add(l5);
        c2.add(l6);
        c1.add(l1);
        c1.add(l2);
        c1.add(l3);
        c1.add(c2);
        c1.op();
    }
}

四.应用场景

  1)操作系统的资源管理器

  2)OA系统中组织结构

  3)junit单元测试框架

java设计模式 GOF23 09 组合模式

标签:

原文地址:http://www.cnblogs.com/larobyo/p/5327239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!