Version française
Home     About     Download     Resources     Contact us    
Browse thread
RE: [Caml-list] How to implement "Singleton" design pattern?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Gurr, David (MED, self) <David.Gurr@m...>
Subject: RE: [Caml-list] How to implement "Singleton" design pattern?
SML (esp. Mosml) & Ocaml have modules. -D

> -----Original Message-----
> From: SooHyoung Oh [mailto:shoh@duonix.com]
> Sent: Friday, August 02, 2002 10:29 PM
> To: Caml-List
> Subject: [Caml-list] How to implement "Singleton" design pattern?
> 
> 
> 
> 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
-------------------
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