2 Stimmen

Warum ist die Erstellung geschützter Eigenschaften in Beans eine schlechte Praxis?

Was ich meine, ist:

public class SomeBackingBean {

   protected String someString;

   public void setSomeString (String str) { 
      this.someString = str; 
   }

   public String getSomeString {
      return someString;
   }
}

Es war nur ein allgemeiner Fall für eine allgemeine Antwort.

Nun das zweite Beispiel:

public abstract class AbstractBean<T extends EntityInterface> {

   protected T entity;

   public void setEntity (T t) {
      this.entity = t;
   }

   public void getEntity () {
      return entity;
   }

   protected ReturnType calculateSomethingCommon () {
      //use entity (knowing that it implements EntityInterface) 
      //to implement some common for all subclasses logic
   }
}

public class ConcreteBean extends AbstractBean<ConcreteEntity> {
   ...
   //and here we can write only specific for this bean methods
   ...
}

Ist das zweite Beispiel auch ein Beispiel für schlechte Praxis?

6voto

Jeff Storey Punkte 54752

Im Allgemeinen verstoßen geschützte Variablen gegen objektorientierte Grundsätze. Sie gewähren anderen Objekten direkten Zugriff auf Mitgliedsvariablen. Dadurch entsteht eine engere Kopplung und es wird schwieriger, die Variable zu ändern, da andere Objekte sie direkt verwenden. Das bedeutet auch, dass Sie nicht überprüfen können, ob die Variable gesetzt ist, und keine Protokollierung um Getter/Setter herum einfügen können usw.

0voto

Luhar Punkte 1809

Wenn Sie z. B. einen PropertyChangeListener für Eigenschaften einer Bean registriert haben, werden registrierte Listener möglicherweise nicht benachrichtigt, wenn eine geschützte Eigenschaft direkt von einer Unterklasse geändert wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X