鏈式處理器是一種常見的編程設計,Netty 是使用 Java 語言編寫的一款異步事件驅動的網絡應用程序框架,支持快速開發可維護的高性能的面向協議的服務器和客戶端,Netty 中就有相似的鏈式處理器的設計。編程
Netty 能夠使用相似的處理鏈對封包進行收發編碼及處理,Netty 的開發者能夠分爲 3 種:第一種是 Netty 底層開發者;第二種是每一個處理環節的開發者;第三種是業務實現者。在實際開發環節中,後兩種開發者每每是同一批開發者,鏈式處理的開發思想將數據和操做拆分、解耦,讓開發者能夠根據本身的技術優點和需求,進行系統開發,同時將本身的開發成果共享給其餘的開發者。服務器
package main import ( "fmt" "strings" ) // 字符串處理函數,傳入字符串切片和處理鏈 func StringProccess(list []string, chain []func(string) string) { // 遍歷每個字符串 for index, str := range list { // 第一個須要處理的字符串 result := str // 遍歷每個處理鏈 for _, proc := range chain { // 輸入一個字符串進行處理,返回數據做爲下一個處理鏈的輸入。 result = proc(result) } // 將結果放回切片 list[index] = result } } // 自定義的移除前綴的處理函數 func removePrefix(str string) string { return strings.TrimPrefix(str, "go") } func main() { // 待處理的字符串列表 list := []string{ "go scanner", "go parser", "go compiler", "go printer", "go formater", } // 處理函數鏈 chain := []func(string) string{ removePrefix, strings.TrimSpace, strings.ToUpper, } // 處理字符串 StringProccess(list, chain) // 輸出處理好的字符串 for _, str := range list { fmt.Println(str) } }