一、责任链
package com.study.responsibility.kotlin
class FilterChain {
private var filterList = mutableListOf<Filter>()
var index = 0
fun addFilter(filter: Filter): FilterChain {
filterList.add(filter)
return this
}
fun doFilter(request: Request, response: Response) {
if (index == filterList.size) return
val filter = filterList[index]
index++
filter.doFilter(request, response, this)
}
}
二、过滤器
package com.study.responsibility.kotlin
class LogFilter:Filter {
override fun doFilter(request: Request, response: Response, chain: FilterChain) {
request.requestName += "——LogFilter"
chain.doFilter(request, response)
response.responseName += "——LogFilter"
}
}
package com.study.responsibility.kotlin
class CacheFilter : Filter {
override fun doFilter(request: Request, response: Response, chain: FilterChain) {
request.requestName += "——CacheFilter"
chain.doFilter(request, response)
response.responseName += "——CacheFilter"
}
}
三、主程序调用
package com.study.responsibility.kotlin
fun main() {
var request = Request("中国")
var response = Response("超级中国")
var filterChain = FilterChain()
filterChain.addFilter(LogFilter()).addFilter(CacheFilter())
filterChain.doFilter(request, response)
println(request.requestName)
println(response.responseName)
}
四、运行结果