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

topeg
 2010-08-18 02:39
#140745 #140745
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2010-08-17T23:46:18 sitescriptor
Noch eine Bemerkung zu Euren Beispielen: in sub new... müsste auch einmal das Objekt der Packetvariablen zugewiesen werden.


Ja und nein.

Es ist eine Sache der Vorstellung. für mich erzeugt "new" immer ein ein neues Objekt, ohne "Abhängigkeiten" und "Ausnahmen". "get_obj" nutzt "new" um ein neues Objekt zu erzeugen. Vermischt du beides bekommst in deinem Fall das Problem, dass dir unter Umständen mehrere verschiedenen Objekte über "get_obj" bekommst, obwohl du erwarten würdest, dass es immer das gleiche ist.

Willst du es so machen, würde ich es etwas anders schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package Sitescriptor::Core::Request::Httpheader;
my $me;

sub new
    {
    return $me if($me);

    my $pkg = shift;
    my $Self = {};
    bless( $Self, (ref $pkg || $pkg) );
    $me = $Self;
    return $Self;
    }

sub get_obj
    {
    return __PACKAGE__->new(@_)
    }


So würdest du sicher stellen, dass immer das gleiche Objekt genutzt wird. Das würde aber meinem Verständnis von "new" wieder sprechen.

View full thread Frage zur Programmstruktur: "globale Objekte"