zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    如何将PDF转换成word文档
    pdf转换成word教程
    VMware Net 模式网络配置
    多系统引导-refind
    Linux 磁盘分区调整工具
    Centos 8 安装 docker
    Centos 8 安装 gitlab13
    Centos 8 安装压缩版 mysql-8.0.21-el7-x86_64.tar.gz
    CentOS 添加用户并赋予管理员权限
    Centos 7 防火墙(firewall-cmd)添加端口访问
  • 原文地址:https://www.cnblogs.com/lightsong/p/8724404.html
Copyright © 2011-2022 走看看