Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Dimitri, in diesem Fall verwechselst du wahrscheinlich ein wenig die Ziele der Muster Keeper und Prototype und alle ihre möglichen Kombinationen und Erscheinungsformen. Erstens: Snapshot muss im Gegensatz zu Prototype nicht unbedingt das gesamte Objekt kopieren.
Und ja, die Notwendigkeit der Kapselung zeigt sich vor allem bei großen Projekten mit vielen Beteiligten. Bei den meisten dieser Spielzeuge ist es ein bisschen überflüssig.
Worauf es ankommt, ist, sich hinzusetzen und allen Ernstes darüber zu sprechen, wie man einer Variablen einen Wert zuweist und sie dann verwendet. Ach ja - wenn man irgendetwas auf irgendetwas programmiert, werden oft verschiedene Werte verschiedenen Variablen zugewiesen und dann verwendet. Aber jetzt heißt es anders, und wenn man darüber spricht, muss man die Augenbrauen zusammenziehen und einen ernsten Blick aufsetzen.
Und es ist wichtig, keinen Fehler zu machen: Wenn alle Felder gespeichert sind, ist es Prototype, wenn nicht, ist es Keeper, sonst lachen die Jungs.
Sie gehören doch nicht zu der Sekte "Die installieren das Internet, wir brauchen es nicht, wir brauchen Ihr Internet nicht...", oder? ???
1. Der Custodian ähnelt von seiner Konzeption her dem Muster, das sie zur Speicherung von Zuständen bei der Eingabe veränderlicher Inhalte verwenden, um Änderungen rückgängig zu machen, wenn diese Änderungen nicht eine, sondern mehrere hundert sind. Z.B. Foto-Editor, Text-Editor...
Gefunden nach dem Schreiben -https://refactoring.guru/ru/design-patterns/memento
2. es ist im Grunde eine schlechte Praxis, wenn man das Thema nicht kennt und nicht versteht, um dort etwas zu kritisieren...
3. Wie kann etwas, das man ohnehin nicht versteht, noch verwirrender und schwieriger zu verstehen sein?
4. Der Rest liegt bei Ihnen...
Was hat die GOP damit zu tun?
Gehören Sie nicht zufällig zu der Sekte "Die installieren intinet, wir brauchen es nicht, Sie intinet"? ???
1. Der Custodian ähnelt von seiner Konzeption her dem Muster, das sie zur Speicherung von Zuständen bei der Eingabe veränderlicher Inhalte verwenden, um Änderungen rückgängig zu machen, wenn diese Änderungen nicht eine, sondern mehrere hundert sind. Z.B. Foto-Editor, Text-Editor...
Gefunden nach dem Schreiben -https://refactoring.guru/ru/design-patterns/memento
2. es ist im Grunde eine schlechte Praxis, wenn man das Thema nicht kennt und nicht versteht, um dort etwas zu kritisieren...
3. Wie kann etwas, das man ohnehin nicht versteht, noch verwirrender und schwieriger zu verstehen sein?
4. Der Rest liegt bei Ihnen...
Ich stehe voll und ganz hinter Ihnen! Danke, dass Sie meinen Standpunkt vertreten haben... Ich war zu faul))
Ich würde nur zu Punkt 1 hinzufügen, dass der Schnappschuss nicht unbedingt alle Objektdaten speichert und dass es mehrere Zweige mit Hunderten von Schnappschüssen desselben Objekts geben kann "Schnappschüsse von verschiedenen Seiten". In diesem Fall ist die Speicherung von Hunderten von Kopien ungenutzter Daten wirklich die schlechteste Praxis.
So weit ist es gekommen - wir sitzen da und reden allen Ernstes darüber, wie einer Variablen ein Wert zugewiesen und sie dann verwendet werden kann. Ach ja - beim Programmieren von irgendetwas in irgendetwas werden oft verschiedene Werte verschiedenen Variablen zugewiesen, die dann verwendet werden. Aber jetzt heißt es anders, und wenn man darüber spricht, muss man die Augenbrauen zusammenziehen und einen ernsten Blick aufsetzen.
Und es ist wichtig, keinen Fehler zu machen, wenn alle Felder gespeichert sind, dann ist es der Prototyp, und wenn nicht alle, dann der Wächter, oder die Jungs werden lachen.
Dmitry, ich versichere Ihnen, ich würde gerne über Sie lachen, gut, ich liebe es), aber in diesem Fall haben Sie übertrieben, auch besonders gut lächelte.
Sie sind wirklich verwirrt - ein SCHUSS ist nicht gleich eine OBJEKTKOPIE, ich habe Sie darauf hingewiesen.
Wenn es nicht klar ist, lassen Sie es mich anhand eines Beispiels erklären: Sie haben 1000 Bytes eines Objekts, Sie brauchen 200 für einen Schnappschuss, warum also 800 kopieren, besonders wenn Sie viele Millionen gespeicherte Schnappschüsse haben.
p/s// Und ganz allgemein. Ist den Leuten nicht klar, dass Muster nur ein elementares Beispiel für die Lösung eines elementaren TYPISCHEN Problems sind? Und in der Tat sind die Aufgaben nicht einfach, sondern komplizierter. Und um reale Probleme zu lösen, sind die Muster notwendig, aber oft nicht in reiner Buchform, sondern angepasst an eine bestimmte Aufgabe, möglicherweise miteinander kombiniert, möglicherweise mit dem Zusatz einer gewissen Improvisation, die sich manchmal in einer Vereinfachung ausdrückt, wenn die Aufgabe es erlaubt, oder umgekehrt "Gewichtung" der Realisierung.
Nochmals, warum braucht man Kapselung und Schnittstellen - das kann man wahrscheinlich nicht verstehen, wenn Ihr IQ unter Wasserman liegt oder wenn Sie nicht an echten Projekten teilgenommen haben, bei denen verschiedene Teile des Projekts von verschiedenen Leuten gleichzeitig geändert werden und die Nichtbeachtung grundlegender OOPD-Prinzipien enorme Kosten für das Auffinden von Fehlern verursacht. Wirklich, warum all dies für Stanzen EAs für Markt))
Sergey Dzyublik:
1. Ein Keeper, ähnlich dem Muster, das zur Speicherung von Zuständen bei der Eingabe von veränderlichen Inhalten verwendet wird, um Änderungen rückgängig zu machen, wenn diese Änderungen nicht eine, sondern mehrere hundert sind. Zum Beispiel einen Foto-Editor, einen Text-Editor...
2. In der Tat ist es eine schlechte Praxis, wenn man das Thema nicht kennt und nicht versteht, um dort etwas zu kritisieren...
Der wichtigste Punkt wurde hervorgehoben: Es ist der veränderbare Inhalt, der die Wurzel vieler Probleme des Missbrauchs von OOP ist. Auch ich habe mich lange damit beschäftigt, aber mit der Erfahrung kommt allmählich das Verständnis. Der Code, in dem es viele Beziehungen zwischen Objekten (Zeigern) gibt und gleichzeitig diese Objekte änderbar sind - ist eine schreckliche Nudel, die sich nicht ändern wird. Daher sollten wir uns bemühen, Referenzobjekte unveränderbar zu machen. Nur Wertobjekte müssen änderbar sein, d.h. Strukturen und einfache Typen, und auch Zeiger.
In diesem Fall ist es wünschenswert, das Ausgangsobjekt als Struktur und nicht als Klasse zu deklarieren. Dann kann man seinen Inhalt ändern. In diesem Fall wird natürlich kein Zeiger auf das Objekt genommen und gespeichert, wie im besprochenen Muster, und das ist auch richtig so. Um Objekte zu ändern, muss man explizit auf ihre Methoden verweisen oder sie als Argument an eine Funktion übergeben, d.h:
oder
Nicht so:
sieht es so aus, als würden wir ein Memento-Objekt ändern, aber in Wirklichkeit ändern wir ein anderes Objekt, das sich wahrscheinlich an anderer Stelle im Programm befindet. Dies hat einen Nebeneffekt: Es ist dasselbe, als würde man eine globale Variable an einer Stelle ändern und ihren Wert an einer anderen Stelle verwenden.
D.h. ein Memento sollte keinen Verweis auf das Originalobjekt speichern. Sie sollte nur den Inhalt speichern. Dies ist meine Meinung, aber ich denke, ich bin nicht weit von der Wahrheit entfernt.)
Ich behaupte nicht, dass ich eine eigene Meinung habe, wahrscheinlich habe ich sie irgendwo gelesen, aber imho gibt es beim Programmieren nur zwei Probleme: die richtige Programmstruktur und das schnelle Finden eines guten Namens für eine Variable, und alles andere ist ganz einfach zu erledigen
Ich meine es auch ernst.
Danke, ich werde Ihre Muster lesen
Ich werde warten, falls jemand anderes erscheint, aber nur auf der Ebene der Anfänger und Trainer Fragen akademvelopers stürzen sich in ))))
1) Der Code, der viele Beziehungen zwischen Objekten (Zeigern) hat, und gleichzeitig die Objekte veränderbar sind, ist eine absurde Nudel, in die der Teufel später nicht mehr hineinsehen kann. Deshalb ist anzustreben, dassReferenzobjekte unveränderbar sind.
2)Nur Wertobjekte, d.h. Strukturen und einfache Typen, und Zeiger sollten veränderbar sein.
3) In diesemFall ist es wünschenswert, das Ausgangsobjekt als Struktur zu deklarieren, nicht als Klasse. Dann kann man seinen Inhalt ändern. Natürlich kann man keinen Zeiger darauf nehmen und ihn speichern, wie im besprochenen Muster, und das ist auch richtig.
4)Objekte müssen geändert werden, indem man ihre Methoden explizit aufruft oder sie als Argument an eine Funktion übergibt.
Es sieht so aus, als würden wir das Memento-Objekt ändern, aber in Wirklichkeit ist es ein anderes Objekt, das sich wahrscheinlich an einer anderen Stelle im Programm befindet. Dies hat einen Nebeneffekt.
1. Es stellt sich heraus, dass die Datenstruktur Tree vom Bösen ist...
2. schlechtes C++, wo class == private struct, was zu tun ist, wir sollten wahrscheinlich Strukturen und Klassen aufgeben.
3. und das ist richtig: keine Muster, keine Sortierung nach Zeigern, keine Speicherersparnis, insbesondere bei großen Objekten...
4. Wir sollten nicht vergessen, die Verwendung von Schnittstellen und Template-Funktionen zu verbieten, da man sonst nicht versteht, mit welchem Objekt man arbeitet - was für ein Horror...