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.