• Groovy 设计模式 -- 组合模式


    Composite Pattern

    http://groovy-lang.org/design-patterns.html#_chain_of_responsibility_pattern

    组合模式,允许你将多个对象作为一组对象对待。这些对象具有层次结构,并具有相同的 方法, 有叶子节点和组合节点。

    组合节点,调用子节点(叶子和组合节点)的方法,实现组合节点自身的方法。

    The Composite Pattern allows you to treat single instances of an object the same way as a group of objects. The pattern is often used with hierarchies of objects. Typically, one or more methods should be callable in the same way for either leaf or composite nodes within the hierarchy. In such a case, composite nodes typically invoke the same named method for each of their children nodes.

    例子

    Consider this usage of the composite pattern where we want to call toString() on either Leaf or Composite objects.

    CompositeClasses
    abstract class Component {
        def name
        def toString(indent) {
            ("-" * indent) + name
        }
    }
    
    class Composite extends Component {
        private children = []
        def toString(indent) {
            def s = super.toString(indent)
            children.each { child ->
                s += "\n" + child.toString(indent + 1)
            }
            s
        }
        def leftShift(component) {
            children << component
        }
    }
    
    class Leaf extends Component { }
    
    def root = new Composite(name: "root")
    root << new Leaf(name: "leaf A")
    def comp = new Composite(name: "comp B")
    root << comp
    root << new Leaf(name: "leaf C")
    comp << new Leaf(name: "leaf B1")
    comp << new Leaf(name: "leaf B2")
    println root.toString(0)
  • 相关阅读:
    给定一个排序数组,你需要在原地删除重复出现的元素
    OSPF-外部路由
    虚链路
    OSPF域间路由计算,防环
    转 C# 只允许运行一个实例
    转 点击关闭时最小化到任务栏
    C#,int转成string,string转成int
    SQL 查找表名 字段名
    C# *= 运算顺序
    SQL 批量删除表
  • 原文地址:https://www.cnblogs.com/lightsong/p/8724404.html
Copyright © 2020-2023  润新知