Es lebe die Factory, es lebe die Fabrik

Zweckmäßiges Organisieren von Methoden für Subklassen

Zunächst ein par Zeilen Perlcode:

use strict; use warnings; my $m = bless{}; $m->foo(123); sub AUTOLOAD{ my $self = shift; our $AUTOLOAD; #print $AUTOLOAD; # main::foo eval{ $AUTOLOAD =~ /(\w+)$/; require "factory/$1.pm"; my $code = $self->can($1); $self->$code(@_); } or die $@; }

Und eine Datei die wir erstellen:

# Dateiname foo.pm use strict; use warnings; sub foo{ my $self = shift; print "@_"; } 1;

Erläuterungen

Sinn und Zweck dieser Übung ist es, Funktionen/Methoden aus verschiedenen Subklassen heraus einfach aufrufen zu können ohne diese Funktionen in den Subklassen jedesmal neu schreiben oder die Basisklasse verändern zu müssen. Für diesen Fall, also wenn eine Funktion nicht in der aktuellen Package definiert ist, ruft der Perl-Interpreter eine Methode namens AUTOLOAD. Diese Methode muß natürlich definiert sein, zweckmäßigerweise in derjenigen Package von welcher alle unsere Subklassen erben. Sodann versucht AUTOLOAD ein require auf die Datei welche den gleichen Namen hat wie die aufgerufene Methode. Dieser Name ist in der Variablen $AUTOLOAD zu finden und wird über den Ausdruck (\w+) ermittelt.

Dann wird mit $self->can($1) noch geprüft, ob es die aufgerufene Methode mit dem Namen in $1 tatsächlich gibt und schließlich wird sie aufgerufen und ausgeführt.

Kommentare: Es lebe die Factory, es lebe die Fabrik

Rev.: 2023-01-24 10:02:03


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de und wenn Sie möchten daß mein Prepaid nicht verfällt dürfen Sie mich auch gerne anrufen 01625 26 40 76.