package Ġcom . ye o ji . kot odo . controller Ċ Ċ import Ġt orn ad of x . Controller Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġmanages Ġthe Ġcontrollers Ġin ĠK ot odo Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġjq Ġon Ġ 2 2 / 0 4 / 2 0 1 7 . Ċ Ġ*/ Ċ Ċ class ĠController Manager Ġprivate Ġconstructor () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġthe Ġcontrollers Ġin Ġthe Ġapp ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcontrollers : ĠMutable List < Controller > Ġ= ĠArrayList () ĊĊĠĠĠ Ġcompanion Ġobject ĠSingleton Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġsingleton Ġinstance Ġof Ġthe ĠController Manager ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcontroller Manager : ĠController Manager ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturn Ġthe Ġinstance Ġof ĠController Manager ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠController Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( controller Manager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller Manager Ġ= ĠController Manager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontroller Manager Ġas ĠController Manager ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRegister Ġa Ġnew Ġcontroller Ġif Ġit Ġdoesn 't Ġalready Ġexist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Controller ( controller : ĠController ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġonly Ġregister Ġthe Ġcontroller Ġif Ġit 's Ġnot Ġalready Ġregistered ĊĠĠĠĠĠĠĠ Ġif Ġ( retrieve Controller ( controller :: class ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrollers . add ( controller ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġa Ġcontroller Ġby Ġclass Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġretrieve Controller ( controller Class : ĠK Class < out ĠController >): ĠController ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontroller : ĠController ? Ġ= Ġcontrollers . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit :: class Ġ== Ġcontroller Class ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontroller ĊĠĠĠ Ġ} Ċ Ċ } Ċ