Thread Perl Factory Design Pattern
(20 answers)
Opened by rosti at 2014-05-04 12:17
10 Jahre später:
Meine Factory bewährt sich bestens. Egal ob ein Filetransfer ansteht oder ein Datenbankhandle gebraucht wird, oder Methoden in mehreren Subklassen gebraucht werden, use base "Factory"; ist die Lösung und so erbt auch jede Framework-Instanz alle Methoden der Factory-Class wobei der Code jeder dieser Methoden erst kompiliert wird wenn die Methode das Erstemal aufgerufen wird. Ursprünglich hieß es, das Factory Pattern liefert Instanzen, sei also nur ein Wrapper, Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 # Legacy use MyFTP; my $ftp = MyFTP->new(); # Klasse einbinden und Konstruktor aufrufen # Factory my $ftp = $self->ftp(); # Nur eine Methode aufrufen # wobei $self die Instanz einer beliebigen Subklasse ist Und aus dieser Grundidee heraus habe ich dieses Entwurfsmuster so erweitert, daß die Methoden meiner Factory nicht nur dazu dienen Objekte, also Instanzen nichtverwandter Klassen zu erzeugen, sondern voll in mein Framework integriert sind, also auch Platzhalter mit Werten füllen und als Schnittstellen dienen (HTTP, I/O, MySQL ... ). Kurzum, ich habe die Factory zur Basisklasse in meinem Framework gemacht. Legacy: Alle Methoden die von den Subklassen geerbt werden, sind in der Basisklasse definiert. Nachteile: Es werden Methoden kompiliert die gar nicht gebraucht werden, wenn neue Methoden hinzukommen, muss die Basisklasse geändert werden. Factory: Jede Methode ist in einer eigenen Datei definiert, Methoden werden nur kompiliert wenn sie benötigt werden. Wenn eine neue Methode hinzukommt, wird die Basisklasse nicht geändert sondern einfach eine neue Datei erstellt. Besonders praktisch ist die Factory-Methode $self->template() womit ein HTML-Template in mehrere Templates aufgeteilt werden kann und damit Kontrollstrukturen (if/else if/else) im Template entfallen. So wird mit dieser Methode einfach nur das Template gewechselt und mit der darunter liegenden Aufteilung ist das Template selbst viel übersichtlicher als mit eingebauten Kontrollstrukturen. (ich kenne Programmierer die bilden die ganze Programmlogik im Template ab, das ist sowas von pfui). Last edited: 2025-08-27 09:47:25 +0200 (CEST) |