How does one implement a singleton design pattern in a programming language? Whether or not to apply a singleton pattern, isolation of this argument is a good idea, here is a possible implementation:
Package Singleton Type Single Structure {O Interface {}; } Var instantiated * single = zero func new () * single {instantiated == blue {instantiated = new (single); } Return immediately; }
single
and instant
are private, but new ()
is public, thus you < Without code> single can not instantiate directly through New ()
, and it tracks the number of instant with the private boolean instantiated
. Adjust to adjust the taste of single
.
However, as many others, this thread is not secure, unless you are just starting your code in init)
. A better way would be to take advantage of sync.Once
to work hard for you:
Package Singleton Import "Sync" Type Single Structure {O Interface { }; } Var instantiated * single var once sync.Once func new () * single {one.Do (func () {instantiated = & single {}} instantiated}
Also see Hassan Jay's suggestion to think of a package, like as a singleton and finally, what others are suggesting: these singletons are often indicators of problematic implementation. .
No comments:
Post a Comment