comp.lang.ada
 help / color / mirror / Atom feed
From: Martin <martin.dowie@btopenworld.com>
Subject: Re: Ada-Singleton-Why does it work like this?
Date: Tue, 24 Mar 2009 17:10:11 -0700 (PDT)
Date: 2009-03-24T17:10:11-07:00	[thread overview]
Message-ID: <6d2b2c67-22fb-4283-87ab-58357e47d5ca@v39g2000yqm.googlegroups.com> (raw)
In-Reply-To: WFbyl.30045$DP1.2209@attbi_s22

On Mar 24, 8:47 pm, "Jeffrey R. Carter"
<spam.jrcarter....@spam.acm.org> wrote:
> patrick.gu...@googlemail.com wrote:
> > Hi all,
> > I´m currently working on implementing several design patterns in Ada,
> > and I found some code concerning the Singleton-pattern when searching
> > through the posts of this group. I used this code and it all worked as
> > expected. My problem is, that I don´t ave any idea, why it does...here
> > is my code:
>
> > package Singleton is
>
> >    type Singleton_Type (<>) is tagged limited private;
> >    type Singleton_Access is access all Singleton_Type;
>
> >    function return_Single return Singleton_Access;
>
> >    procedure setValues(input : in out Singleton_Access; valueIN :
> > Integer; valueIN2 : Integer);
> >    procedure print_something(input : Singleton_Access);
>
> >    private
> >    type Singleton_Type is tagged limited record
> >            value : Integer;
> >            value2 : Integer;
> >    end record;
>
> > end Singleton;
>
> This is a very poor solution to the problem. A much simpler solution is
>
> package Singleton is
>     procedure Set (Value_1 : in Integer; Value_2 : in Integer);
>
>     procedure Print;
> end Singleton;

But you can not derive a class from this:

with Singletons; use Singletons;
package Print_Managers is
   type Print_Manager is new Singleton with private;
   -- There should only be 1 print manager
private
   -- implementation
end Print_Managers;

Now you could argue that there should just be a "package
Print_Manager" and no need for a Print_Manager type...

...and the idea that you can derive from a 'Singleton' type rather
defeats it as a 'pattern' but that's no bad thing IMHO! :-)

Cheers
-- Martin



  reply	other threads:[~2009-03-25  0:10 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-24 19:01 Ada-Singleton-Why does it work like this? patrick.gunia
2009-03-24 19:10 ` Pascal Obry
2009-03-24 20:47 ` Jeffrey R. Carter
2009-03-25  0:10   ` Martin [this message]
2009-03-25  0:41     ` Jeffrey R. Carter
2009-03-25  9:30     ` Dmitry A. Kazakov
2009-03-26  8:55       ` Martin
2009-03-26  9:28         ` Dmitry A. Kazakov
2009-03-26 13:39           ` Maciej Sobczak
2009-03-26 14:07             ` Georg Bauhaus
2009-03-26 14:33               ` Dmitry A. Kazakov
2009-03-26 15:22                 ` Georg Bauhaus
2009-03-26 16:31                   ` Dmitry A. Kazakov
2009-03-26 14:28             ` Dmitry A. Kazakov
2009-03-26 22:00               ` Maciej Sobczak
2009-03-27 10:02                 ` Dmitry A. Kazakov
2009-03-25 22:29   ` sjw
2009-03-24 20:52 ` Ludovic Brenta
2009-03-25  9:59   ` patrick.gunia
2009-03-25 10:29     ` Jean-Pierre Rosen
2009-03-25 11:26     ` Georg Bauhaus
2009-03-25 11:49       ` patrick.gunia
2009-03-29  7:29     ` Jacob Sparre Andersen
2009-03-24 21:21 ` Dmitry A. Kazakov
2009-03-25 10:07   ` patrick.gunia
2009-03-25 10:57     ` patrick.gunia
2009-03-25 11:40       ` Georg Bauhaus
2009-03-25 11:46       ` Ludovic Brenta
2009-03-25 11:55         ` patrick.gunia
2009-03-25 14:10         ` patrick.gunia
2009-03-25 14:40           ` Ludovic Brenta
2009-03-25 15:16             ` Adam Beneschan
2009-03-25 15:19             ` patrick.gunia
2009-03-25 16:52               ` Georg Bauhaus
2009-03-25 11:10     ` Dmitry A. Kazakov
2009-03-25 11:37       ` patrick.gunia
2009-03-25 12:07         ` Ludovic Brenta
2009-03-25 15:00         ` Robert A Duff
2009-03-25 11:17     ` Jean-Pierre Rosen
2009-03-26  9:04       ` Martin
2009-03-25 11:38     ` Ludovic Brenta
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox