Ich würde vermuten, dass Sie nicht sehen, Stack oder Warteschlange Schnittstellen ist wegen der Natur der Sammlungen. Die Auflistungsschnittstellen, die Sie aufgelistet haben, die Schnittstellen haben, sind zufälliger Zugriff, während Stapel und Warteschlangen nicht sind. Sie müssen auf ganz bestimmte Weise (FIFO oder LIFO) aufgerufen werden und können daher nicht allgemein verwendet werden. Daher ist es sinnvoll, diese Sammlungen nur als generische Implementierungen, aber nicht über Schnittstellen zu verwenden. Mit anderen Worten, aufgrund der Einschränkungen, die LIFO/FIFO einer Sammlung auferlegt, gibt es sehr wenig (oder nichts), was von einer Klasse, die ein theoretisches IStack oder IQueue implementiert, anders ausgeführt werden kann.
Um diese Idee auszuüben, könnten Sie Ihren eigenen IStack und/oder IQueue erstellen und diese dann in einer Klasse implementieren. Sie werden sehen, dass die von Ihnen zur Verfügung gestellte Funktionalität vollständig übertragen wird. Z.B. Am Ende werden Anforderungen und Ergebnisse einfach an eine interne Stapel- oder Warteschlangensammlung weitergeleitet oder zurückgegeben. Und in dieser Pass-Through-Funktionalität wird es wenig oder gar keinen potenziellen Mehrwert geben.
Ein Stapel oder eine Warteschlange ist eine ziemlich triviale Implementierung einer sortierten Liste. Warum also sollten sie etwas einbauen, das wie 2 Zeilen Code ist, so dass es stattdessen 1 sein könnte? –
@ Russell Steen was ist * in der Warteschlange * sortiert? Verknüpfte Liste kann sein? – Andrey
@ Russell Steen Implementierungsdetails sollten kein Faktor für eine klar definierte * Schnittstelle * sein. –