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)
  • 相关阅读:
    Vue
    自定义分页器
    selenium-确认进入了预期页面
    PyCharm常用快捷键(pycharm使用教程)
    Linux命令大全|linux常用命令
    ADB常用命令(adb常用命令)
    关于界面库
    VMWARE player 如何让 win2012 guest os 支持HYPER-V
    关于中文域名转码
    注册表中LEGACY残留项的清理技巧
  • 原文地址:https://www.cnblogs.com/lightsong/p/8724404.html
Copyright © 2011-2022 走看看