caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "SooHyoung Oh" <shoh@duonix.com>
To: "Caml-List" <caml-list@inria.fr>
Subject: [Caml-list] How to implement  "Singleton" design pattern?
Date: Sat, 3 Aug 2002 14:29:13 +0900	[thread overview]
Message-ID: <002d01c23aae$b44a6490$fe00a8c0@hama> (raw)


It seems that applying design pattern to Ocaml isn't difficult.
While I've been testing some of them,
I found a strange design pattern called "Singleton".

In Java, "Singleton" design pattern looks like this:

    public class Singleton {
        private static Singleton singleton = new Singleton ();
        private Singleton () {
            ...
        }
        public static Singleton getInstance () {
            return singleton;
        }
    }

and in main, it doesn't use "new" but use "getInstance()" for get THE shared
instance.

    {
    ...
    Singleton obj1 = Singleton.getInstance ();
    Singleton obj2 = Singleton.getInstance ();
    ...
    }

I think that the key point of Singleton class is
(1) can't use "new Singleton ()"
because the constructor is private.
(2) "static Singleton singleton" which keeps the only one Singleton object
and it is shared between all instances.

The (2) seems to be possible using "Class variable".
And then how can we solve the (1)?

There are some possible solutions:
(a) invisible class definition in a module
(b) the class definition which can't be called with "new" (private class ?)
(c) local class definition (in another class definition ?)

Which one/ones is/are feasible and/or good in Ocaml?
And are there any other solutions?

---
SooHyoung Oh
tel: 02)583-8709, 042)861-8649
cell. phone: 011-453-4303
web: http://www.duonix.com


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


             reply	other threads:[~2002-08-03  5:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-03  5:29 SooHyoung Oh [this message]
2002-08-03 17:42 ` Tim Freeman
2002-08-05  9:28 ` Hendrik Tews
2002-08-05 17:48 Gurr, David (MED, self)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='002d01c23aae$b44a6490$fe00a8c0@hama' \
    --to=shoh@duonix.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).