设计模式之组合模式

本文介绍了组合模式的概念及其在软件设计中的应用。通过树形结构来表示部分及整体层次,使得高层模块能够简单地调用,同时支持节点的自由增加。文章还提供了一个简单的Java实现案例。

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

优点:1、高层模块调用简单。2、节点自由增加。

缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

public class TreeNode {
    private String leafName;
    private List<TreeNode> treeNodeList;

    public String getLeafName() {
        return leafName;
    }

    public void setLeafName(String leafName) {
        this.leafName = leafName;
    }

    public List<TreeNode> getTreeNodeList() {
        return treeNodeList;
    }

    public void setTreeNodeList(List<TreeNode> treeNodeList) {
        this.treeNodeList = treeNodeList;
    }

    public TreeNode(String leafName) {
        this.leafName = leafName;
        this.treeNodeList = new ArrayList<TreeNode>();
    }

    public void add(TreeNode treeNode){
        treeNodeList.add(treeNode);
    }

    public void remove(TreeNode treeNode){
        treeNodeList.remove(treeNode);
    }

    public void traverse(){
        System.out.println();
    }

}
实现测试类

public class Tree {
    TreeNode treeNode = null;

    public static void main(String[] args){
        Tree tree = new Tree("parent");
        TreeNode A = new TreeNode("A");
        TreeNode B = new TreeNode("B");
        A.add(B);
        tree.treeNode.add(A);
    }

    public Tree(String treeName){
        treeNode = new TreeNode(treeName);
    }
}
参考内容

https://sourcemaking.com/design_patterns/composite/java/2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值