package Ġcom . s ot wt m . support . util . singleton Ċ Ċ /** Ċ Ġ* ĠA Ġsingleton Ġholder Ġfor Ġobject Ġwithout Ġarguments Ġin Ġconstructor . Ċ Ġ* Ċ Ġ* ĠUsage , Ġextent Ġthis Ġclass Ġin Ġcompanion Ġobject Ċ Ġ* Ċ Ġ* Ġ` comp anion Ġobject Ġ: ĠSingleton Holder < Instance Class >( :: Instance Class )` Ċ Ġ* Ċ Ġ* ĠThen , Ġ` Instance Class . getInstance ()` Ċ Ġ* Ċ Ġ* Ġ@ author Ġshe ung on Ċ Ġ* Ġ*/ Ċ open Ġclass ĠSingleton Holder < Instance Class >(_ constructor : Ġ() Ġ-> ĠInstance Class ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġinstance Constructor : Ġ(() Ġ-> ĠInstance Class ) Ġ= Ġ_ constructor ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġprivate Ġvar Ġinstance : ĠInstance Class ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun ĠgetInstance (): ĠInstance Class Ġ= ĊĠĠĠĠĠĠĠ Ġinstance Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Instant Ġ= Ġinstance Constructor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġnew Instant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Instant ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ