In Java werden Tag-Schnittstellen verwendet (Serializable ist das offensichtliche Beispiel). C# und sogar Java scheinen sich davon wegzubewegen, aber zugunsten von Attributen, die das Gleiche erreichen können, aber auch viel mehr tun.
Ich denke immer noch, dass es einen Platz für sie in anderen Sprachen gibt, die nicht das Attributkonzept haben, das .NET und Java haben.
ETA:
Normalerweise verwenden Sie dies, wenn Sie eine Schnittstelle haben, die eine Implementierung impliziert, aber Sie wollen nicht, dass die Klasse, die die Schnittstelle implementiert, diese Implementierung tatsächlich bereitstellen muss.
Einige Beispiele aus der Praxis:
Serializable ist ein gutes Beispiel - es impliziert, dass es (irgendwo) eine Implementierung gibt, die die Objektdaten serialisieren kann, aber da eine generische Implementierung dafür zur Verfügung steht, besteht keine Notwendigkeit, dass das Objekt diese Funktionalität selbst implementiert.
Ein anderes Beispiel wäre ein System zur Zwischenspeicherung von Webseiten. Angenommen, Sie haben ein "Page"-Objekt und ein "RequestHandler"-Objekt. Der RequestHandler nimmt eine Anforderung für eine Seite entgegen, sucht/erzeugt das entsprechende Page-Objekt, ruft eine Render()-Methode für das Page-Objekt auf und sendet die Ergebnisse an den Browser.
Nehmen wir an, Sie wollten eine Zwischenspeicherung für gerenderte Seiten implementieren. Das Problem ist jedoch, dass einige Seiten dynamisch sind und daher nicht gecached werden können. Eine Möglichkeit, dies zu implementieren, bestünde darin, dass die cachefähigen Page-Objekte eine ICacheable "tag"-Schnittstelle implementieren (oder umgekehrt, man könnte eine INotCacheable-Schnittstelle haben). Der RequestHandler würde dann prüfen, ob die Seite ICacheable implementiert hat, und wenn ja, würde er die Ergebnisse nach dem Aufruf von Render() zwischenspeichern und diese zwischengespeicherten Ergebnisse bei nachfolgenden Anfragen für diese Seite ausgeben.
1 Stimmen
Vielleicht wäre ein Link zu etwas, das erklärt, was Sie mit einer "Tag-Schnittstelle" meinen, nützlich?