package Ġcom . a ung th u ya . code test . ui . base Ċ Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . L ru Cache Ċ Ċ class ĠPres enter Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcache : ĠL ru Cache < String , ĠBase Presenter <* >> Ġ= ĠL ru Cache ( 1 2 ) ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< V Ġ: ĠBase View , ĠP Ġ: ĠBase Presenter < V >> Ġget Presenter ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġfactory : ĠPres enter Factory < P > ĊĠĠĠ Ġ): ĠP Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpresenter : ĠP ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġcache [ key ] Ġas ĠP ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠClass CastException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Presenter Manager ", Ġ" Duplicate Ġpresenter Ġwith Ġkey : Ġ$ key ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( presenter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġfactory . provide Presenter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache . put ( key , Ġpresenter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpresenter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove ( key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcache . remove ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠPres enter Manager Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( Presenter Manager :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPres enter Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }