pl: Repository Pattern erklären + Anwendungsbeispiel

Beitrag lesen

Mal unter uns: Das ganze Patterngedöns wird total überbewertet. Daß man Datenhaltung und Transport über einen speziellen Layer von der Anwendung trennt war für mich schon immer ausschließlich eine Frage der Zweckmäßigkeit. Insbesondere die Austauschbarkeit und Transparenz dieser Layers.

Beispiel:

$VAR1 = bless( {
                 'Heizung_Arbeit' => {
                                       'default' => '0.3',
                                       'devid' => '0x1A1A-1',
                                       'max' => '1.0',
                                       'min' => '0.0',
                                       'period' => '10',
                                       'slider' => '1',
                                       'step' => '0.1',
                                       'times' => [],
                                       'type' => 'PWM'
                                     },
                 'Heizung_Stube' => {
                                      'default' => '19.0',
                                      'max' => '30.0',
                                      'min' => '5.0',
                                      'slider' => '1',
                                      'step' => '1.0',
                                      'times' => [
                                                   '7:00',
                                                   '11:00',
                                                   '22.0',
                                                   '17:00',
                                                   '22:00',
                                                   '24.0'
                                                 ],
                                      'type' => 'Temperature'
                                    },
                 'Hoflicht' => {
                                 'default' => 'Off',
                                 'flipflop' => '1',
                                 'times' => [],
                                 'type' => 'OnOff'
                               }
               }, 'Config::Tiny' );

Der Dump zeigt die ursprüngliche Klassenbindung des Layers an Config::Tiny die jedoch in der Anwendung gar nicht sichtbar ist, weil die Daten initial über eine Methode der Factory $this->configini('Dateiname'); geholt werden.

Der Übergang des abstrakten Datentypes in einen anderen Layer, nämlich $this->{SESSION} ist 100%ig transparent. Und schließlich, nach einer Prüfung der Datenkonsistenz, gehts zurück auf die Festplatte über einen hard codierten Serializer der auch die Webservice Schnittstelle bedient.

Sämtliche Layer sind, von der Initialisierung über die Anwendung, Zwischenspeicherung in der Session bis zum HTTP Client durchsichtig (transparent), d.h., die Datenstruktur für den wahlfreien Zugriff ist überall dieselbe.

MfG