Thread Frage zur Programmstruktur: "globale Objekte" (17 answers)
Opened by sitescriptor at 2010-08-17 14:41

topeg
 2010-08-17 15:07
#140720 #140720
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Wenn das Programm selber ein Objekt ist kann man die Dienste als Parameter einsetzen.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
my $prog=Progamm->new();
$prog->runn();

package Programm;

sub new
{
 my $class=shift;
 #...
 bless(my $self, $class);
 #...
 $self->{dienst}=Dienst->new();
 #...
 return $self;
}

sub mach_was
{
  my $self=shift;
  my $dienst=$self->{dienst};
  #...
}


Ansonsten kommt es halt darauf an wie die Dienste funktionieren. Es kann sinnvoll sein an der Stelle wo man es braucht ein Objekt zu erzeugen und danach wider zu vernichten.

Code (perl): (dl )
1
2
3
4
5
sub mach_was
{
  my $dienst=Dienst->new();
  #...
}


Man kann sie auch an Funktionen als Parameter weiterreichen.
Code (perl): (dl )
1
2
3
4
5
sub mach_was
{
  my $dienst=shift;
  #...
}


Man kann es auch als Packetvariable definieren und eine Funktion schreiben um darauf zu zu greifen. das ist aus meiner Sicht der beste Weg, wenn man in Richtung von globalen Variablen geht.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package Dienst;

my $dienst;

sub new
{
  #...
}

sub get_Dienst
{
  $dienst=Dienst->new(@_) unless($dienst);
  return $dienst;
}

package main;

#...

sub mach_was
{
  my $dienst=Dienst::get_Dienst();

  #...
}

Last edited: 2010-08-17 15:09:43 +0200 (CEST)

View full thread Frage zur Programmstruktur: "globale Objekte"