Schlechte Übung in diesem Frühling Tutorial?

8

Ich folge dem Spring-Tutorial .

>

Im Abschnitt "3.2. Einige Klassen für Geschäftslogik hinzufügen" wird eine Schnittstelle ProductManager erstellt:

%Vor%

Dann wird eine SimpleProductManager Implementierungsklasse erstellt:

%Vor%

Die Implementierungsklasse fügt eine zusätzliche Methode setProducts() hinzu. Sollte die Schnittstelle ProductManager auch keine setProducts -Methode haben, um Klassen zu erlauben, die setProducts verwenden, um SimpleProductManager polymorph zu instanziieren. Derzeit ist das nicht möglich -

%Vor%     
blue-sky 08.01.2012, 19:42
quelle

1 Antwort

7

Die Schnittstelle enthält setProducts nicht, da die Clients dieser Schnittstelle (wahrscheinlich ein MVC-Controller) nicht darauf zugreifen sollen. Die Schnittstelle definiert nur die Operationen, die Clients verwenden sollen, anstatt alle Methoden zu definieren, die die Implementierung haben kann.

Die Methode setProducts ist für die Konfiguration der Beans zugänglich (z. B. mit <property name="products"> ), wodurch die Produkte beim Start statisch konfiguriert werden können. Danach bezieht sich Client-Code über seine eingeschränkte Schnittstelle auf die Bean.

Ihr p.setProducts() -Beispiel sollte in diesem Beispiel niemals aufgerufen werden, da die Produkte nur in der Beans-Konfiguration und nicht in der Geschäftslogik konfiguriert sind.

    
skaffman 08.01.2012, 19:45
quelle

Tags und Links