go语言接口适配,适配器模式
直接上代码:
packagemainimport"log"typeLogINinterface{WARN(string)INFO(string)//其他省略}/*假设你写了一个框架,框架里需要打日志,具体是个什么样的日志由使用者决定*/typeFramestruct{namestringlogLogIN}func(f*Frame)Start(){f.log.INFO("framestart...")}//但是问题来了,使用者用了一个这样的日志库typeRealLogstruct{}func(l*RealLog)warn(sstring){log.Print(s)}func(l*RealLog)info(sstring){log.Print(s)}//可以看到,真正使用的日志与框架定义的日志接口不一样,如此我们就需要适配typeAdaptLogstruct{rellog*RealLog}func(alog*AdaptLog)WARN(sstring){alog.rellog.warn(s)}func(alog*AdaptLog)INFO(sstring){alog.rellog.info(s)}//有了这个适配器,我们就可以很好的在框架里使用RealLog了funcmain(){adaptlog:=AdaptLog{&RealLog{}}frame:=Frame{name:"frame",log:&adaptlog}frame.Start()}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。