← Back to team overview

ooc-dev team mailing list archive

Re: Singletons?

 

Well, I don't know; it's one of the features I love from scala.
I find singletons useful *a lot* of times. It's just an object that there
will be only one instance in the app and that can be accessed from anywhere
in the code.
To me it's useful for example to create a manager of resources, that has
internal cache, and where I can ask for a resource and the manager will look
for it in the cache or load it, process it, and chache it, and that kind of
stuff.
I hate the pattern as you describe it too, because MySingle should be the
instance, not a class, and I should be abble to do something like:

Resources getResource("nana")

instead of

Resource getInstance() getResource("nana")

I think that the namespaced imports are more suitable... Though I don't like
it too much to be honest. But well, ooc is not 100% object oriented and
maybe it's just that I'm not used to that.

By the way, is there any documentation about namespaced imports?

On Wed, Sep 29, 2010 at 3:58 PM, <ndd@xxxxxxxxxx> wrote:

>
> Well singletons are more than namespaces, although I kinda hate this
> pattern, here it goes:
>
> you can choose to implement 'new' as your get method:
>
> MySingle: class {
>
>    _instance := static alloc() as This
>    new: static func -> This { _instance }
>
> }
>
> if you dislike this (because 'new' sortof implies that it's a new
> instance..) just use 'get' instead of 'new', there's not really a
> convention here yet
>
> also, there's no special syntax like Scala's object: I actually dislike
> this bit of Scala's syntax, it's mostly useful for the main class in
> Scala anyway.. (correct me if I'm wrong).
>
> ndd
>
> On Wed, 29 Sep 2010 14:33:01 -0400, Oddity007 <oddity007@xxxxxxxxx>
> wrote:
> > Easy:  Don't.
> >
> > ooc != Java
> >
> > If you want a namespace sort of effect, just use namespaced imports:
> >
> > import Source/Path/Foo into Foo
> >
> > Foo doSomeStuff(10)
> >
> > If you can't use namespaced imports (for one-file-monsters), use a
> > cover's static methods.
> >
> > Foo: cover{
> >   doSomeStuff: static func(argument: Int)
> > }
> >
> > Foo doSomeStuff(10)
> >
> > On Sep 28, 2010, at 1:16 PM, Damian <damian.pop@xxxxxxxxx> wrote:
> >
> >> What's the proper or preferred way to create a singleton in ooc? Is  >
> there something specific to do so? (like 'object' in scala, for  > example)
> >> Thanks!
> >>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~ooc-dev
> >> Post to     : ooc-dev@xxxxxxxxxxxxxxxxxxx
> >> Unsubscribe : https://launchpad.net/~ooc-dev
> >> More help   : https://help.launchpad.net/ListHelp
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~ooc-dev
> > Post to     : ooc-dev@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~ooc-dev
> > More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References