Thread Kritik an OOP
(48 answers)
Opened by hlubenow at 2017-07-12 03:18
Dein $getraenkeautomat ist ein globales Objekt. Wenn Du es ohnehin brauchst, nimm es doch gleich mit als Eigenschaft:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 package Man; # aggregation sub new { my $classname = shift; my $self = { thirst => 0, COLABOT => Getraenkeautomat->new }; return bless($self, $classname); } und delegiere gibMirEineCola als eine eigene Methode: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 package Man; # delegation # die Methode einer nicht verwandten Klasse wird zu einer # eigenen Methode gemacht sub gibMirEineCola{ my $self = shift; return $self->{COLABOT}->gibMirEineCola(@_); } Später delegieren geht natürlich auch, siehe factory. Fehlersuche und Debuggen wird erleichtert, ein Dump auf das $user-Objekt genügt um auch die Eigenschaften des COLABOT zu zeigen. MfG |