トルコの手仕事雑貨店★イスタンブルカフェは、オヤアクセサリーや平織りのラグ・キリムやトルコ雑貨を厳選し、2001年からご紹介しております。

Closing protokoll Muster

Aufgrund der Funktionsweise des Dekoratorprotokolls kann eine auf diese Weise deklarierte Rückruffunktion keine Parameter annehmen. Stattdessen müssen alle freizugebenden Ressourcen als Abschlussvariablen aufgerufen werden. Bei der Computerprogrammierung ist das Strategiemuster (auch als Richtlinienmuster bezeichnet) ein Verhaltenssoftwareentwurfsmuster, das die Auswahl eines Algorithmus zur Laufzeit ermöglicht. Anstatt einen einzelnen Algorithmus direkt zu implementieren, erhält Code Laufzeitanweisungen, welche in einer Familie von Algorithmen verwendet werden sollen. [1] Gelegentlich ist es wünschenswert, Ausnahmen von einer __enter__-Methode-Implementierung abzufangen, ohne versehentlich Ausnahmen von der with-Anweisungstext oder der __exit__-Methode des Kontext-Managers abzufangen. Mit ExitStack lassen sich die Schritte im Kontextverwaltungsprotokoll leicht voneinander trennen, um dies zu ermöglichen: Das Callback-Schließungsmuster scheint sich überall einzuschleichen. Es kann eine großartige Möglichkeit sein, Komplexität zu reduzieren, eine bis viele Beziehungen zu behandeln und Code lesbarer zu machen. Ich bin jedoch nach wie vor der Meinung, dass ein Protokoll für die meisten Fälle besser geeignet ist. Aber es gibt ein neues Muster, das das Delegiertenmuster in aller Stille zu ersetzen scheint.

Ich bin mir nicht sicher, ob es einen offiziellen Namen hat, aber ich nenne es: Wenn eine bestimmte Anwendung dieses Muster viel verwendet, kann es durch eine kleine Helferklasse noch weiter vereinfacht werden: Erstens werden wir design ein Protokoll verwenden, das als Typ verwendet wird, dem UIViewController entspricht. Die frühen Apple-Ingenieure liebten das Delegiertenmuster, um asynchrone Aufgaben zu bewältigen. Lassen Sie uns eine erstellen. Wie alle anderen, als Swift herauskam, tummelte ich mich mit dem Abberufungsmuster für die Schließung und benutzte es, wo ich zuvor einen Delegierten benutzt haben könnte, um immer mehr `Swifty-ness` zu suchen. Ich war aber unzufrieden. Manchmal fühlte es sich wie eine Verbesserung an, und manchmal tat es nicht. Ist der Delegat oder der Schließungsrückruf das überlegene Muster? Ich denke, nun, es kommt darauf an. Hier ist ein Beispiel dafür für einen Kontext-Manager, der Ressourcenerfassungs- und Freigabefunktionen akzeptiert, zusammen mit einer optionalen Validierungsfunktion, und sie dem Kontextverwaltungsprotokoll zuordnet: Wie ich bereits erwähnt habe, verwenden Swift-APIs sowohl die Schließung als auch die Delegat-Weise. Allerdings gibt es in diesen Tagen eine leichte Verschiebung. Eines der Beispiele ist UIAlerView. In der Vergangenheit gab es ein Delegatprotokoll namens UIAlertViewDelegate, das die Benutzeraktion wie das Öffnen und Schließen der AlertView verarbeitet. Jetzt ist es seit iOS 8 abgeschrieben.

Wenn Sie viele andere Delegatprotokolle implementieren möchten, müssen Sie wahrscheinlich etwas wie dieses tun, Es mag die alte Art und Weise sein, Dinge zu tun, aber das Delegiertenmuster ist ein klarer Gewinner an dieser Front. Die schwache Beziehung wird nur einmal definiert, und es ist viel schwieriger, einen Fehler zu machen. Verwenden Sie ein Protokoll. Wenn Sie vergessen, in Zukunft neue Methoden zu implementieren, wird ihnen der Compiler nicht Ihre Benutzer, sondern dies mitteilen. Mit der Strategie kann der Algorithmus unabhängig von Clients variieren, die ihn verwenden. [2] Strategie ist eines der Muster des einflussreichen Buches Design Patterns von Gamma et al.[3], das das Konzept der Verwendung von Designmustern populär machte, um zu beschreiben, wie man flexible und wiederverwendbare objektorientierte Software entwirft. Durch das Aufschieben der Entscheidung darüber, welcher Algorithmus verwendet werden soll, bis zur Laufzeit kann der aufrufende Code flexibler und wiederverwendbarer werden. Gemäß dem Strategiemuster sollten die Verhaltensweisen einer Klasse nicht vererbt werden. Stattdessen sollten sie mithilfe von Schnittstellen gekapselt werden. Dies ist mit dem Open/Closed-Prinzip (OCP) vereinbar, das vorschlägt, dass Klassen für die Erweiterung geöffnet, aber für Änderungen geschlossen werden sollten.

Also, wir haben jetzt nur eine Methode, aber was ist, wenn wir in Zukunft 10 haben? Unser Protokoll sieht nun so aus: Mal sehen, ob uns das Abberufungsmuster retten kann: Verwenden Sie im Zweifelsfall ein Protokoll. Durch das Definieren eines Protokolls wird sichergestellt, dass konforme Typen die angegebenen Methoden implementiert haben. Wenn die Protokollanforderungen die Zukunft ändern, müssen Sie ihre Typen vom Compiler aktualisieren. Es vereinfacht auch die schwache / starke Beziehung, so dass Sie es an einem einzigen Ort definieren können.

コメントはまだありません

No comments yet.

RSS feed for comments on this post. TrackBack URL

Sorry, the comment form is closed at this time.