2 Stimmen

Designentscheidung: Erweiterung einer Schnittstelle vs. neue Schnittstelle

Hallo,

Ich habe heute eine kleine Designentscheidung zu treffen: Es gibt eine bestehende Schnittstelle, genannt 'TargetSystem', die nur eine Methode 'getName()' hat. Es gibt keine anderen gemeinsamen Informationen über diese Zielsysteme. Jetzt habe ich eine neue Art von Zielsystemen, die eine Authentifizierung benötigen.

Ich muss wissen, ob ein Zielsystem eine Authentifizierung benötigt oder nicht (das Frontend muss einen Passwort-Dialog für diese anzeigen). Wenn es eine Authentifizierung benötigt, muss ich den Benutzernamen und das Passwort festlegen.

Meine Designentscheidung: Soll ich die bestehende Schnittstelle mit den Methoden 'needsAuthentication' und 'setUsernameAndPassword' erweitern oder eine neue Schnittstelle erstellen, die die alte mit nur der Methode 'setUsernameAndPassword' erweitert, wobei ich die Authentifizierungsanforderung durch instanceof.

Wichtig: Es gibt keine Notwendigkeit, abwärtskompatibel zu sein, oder einen anderen Grund, die alte Schnittstelle nicht anzufassen! Ich habe gerade mit einem Kollegen darüber diskutiert, welcher Weg im Allgemeinen der bessere ist: Schnittstellen mit Namen wie 'ObjectWithFeatureX', 'ObjectWithFeatureY' oder Methoden wie 'hasFeatureX', 'hasFeatureY' zu erstellen.

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