Ich möchte das Open-Close-Prinzip auf dieses folgende Beispiel anwenden, indem ich diesen Code neu schreibe.Open-Close-Prinzip Beispiel
class MyQueue<E> extends ArrayList<E> implements Queue<E> {
int front=0, back=0;
MyQueue() { }
…
void put(E e) { add(back++, e); ...}
E get() { E elem = get(front++); …}
}
Welches Entwurfsmuster würde der Lösung am nächsten kommen und warum? Erklären Sie, warum es besser ist als das nächstbeste Spiel.
Ich habe Probleme zu denken, welche Funktionen diese Klasse erweitern würde. Es hat bereits den Getter und Setter. Ohne zu wissen, welche Art von Erweiterungen angewendet werden kann, bin ich mir nicht sicher, wie ich diesen Code umschreiben soll.
Was ich weiß: OCP ist offen für Erweiterung-geschlossen, um zu ändern. Daher besteht ein allgemeiner Ansatz darin, herauszufinden, wie man es abstrahieren kann. Mein erster Gedanke war, dies zu einer abstrakten Klasse mit abstrakten Methoden zu machen. Dann würde jede Klasse, die MyQueue()
erweitern würde, in der Lage sein, die Getter- und Setter-Methoden zu implementieren, wie sie es auch wollten. Und wenn ich das tue, dann würde ich annehmen, dass dies genau dem Adaptermuster entspricht.
Bitte korrigieren Sie Missverständnisse, die ich mit meinem Verständnis habe.
Ich verstehe nicht, warum das abgelehnt wird ... Ich folgte den Richtlinien, eine Frage zu stellen. Kann jemand klären? Es hilft nicht, einfach abgelehnt zu werden, ohne zu wissen warum. –
Am wahrscheinlichsten wurde es für das Ausschauen wie Hausaufgaben und fordernde Meinungen herabgestuft. – Andreas
Frage ist ganz nett. Vielleicht in der Nähe von Hausaufgaben, aber immer noch eher ein Verständnis von 'OCP' in der Praxis. Das ist nicht immer offensichtlich. – RMachnik