zoukankan      html  css  js  c++  java
  • Groovy 设计模式 -- 责任链模式

    Chain of Responsibility Pattern

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

    责任链模式, 将一类实现相同接口的对象,组织到一个列表中,

    列表的执行中第一个对象开始, 并依此往后传递,直到某一个对象说我来对此次执行负责, 并终止链条的后续对象执行。

    In the Chain of Responsibility Pattern, objects using and implementing an interface (one or more methods) are intentionally loosely coupled. A set of objects that implement the interface are organised in a list (or in rare cases a tree). Objects using the interface make requests from the first implementor object. It will decide whether to perform any action itself and whether to pass the request further down the line in the list (or tree). Sometimes a default implementation for some request is also coded into the pattern if none of the implementors respond to the request.

    例子

    class UnixLister {
        private nextInLine
        UnixLister(next) { nextInLine = next }
        def listFiles(dir) {
            if (System.getProperty('os.name') == 'Linux') {
                println "ls $dir".execute().text
            } else {
                nextInLine.listFiles(dir)
            }
        }
    }
    
    class WindowsLister {
        private nextInLine
        WindowsLister(next) { nextInLine = next }
        def listFiles(dir) {
            if (System.getProperty('os.name') == 'Windows XP') {
                println "cmd.exe /c dir $dir".execute().text
            } else {
                nextInLine.listFiles(dir)
            }
        }
    }
    
    class DefaultLister {
        def listFiles(dir) {
            new File(dir).eachFile { f -> println f }
        }
    }
    
    def lister = new UnixLister(new WindowsLister(new DefaultLister()))
    
    lister.listFiles('Downloads')
  • 相关阅读:
    关于EKT相关知识(类的反射)
    关于EKT的相关知识(类加载)
    jsoup中selector的用法及作用
    xml相关的Dom解析
    Jsoup的快速入门
    java.sql.SQLException: Column count doesn't match value count at row 1
    JAVA调用存储过程、存储函数
    注解的使用场景-反射与知识点
    JDK1.5新特性
    在JDK中,主要由以下类来实现Java反射机制
  • 原文地址:https://www.cnblogs.com/lightsong/p/8724328.html
Copyright © 2011-2022 走看看