5Ein Ganzzahlindex ist wahrscheinlich nicht der beste Weg, um die untergeordneten Elemente einer Glyphe anzugeben, abhängig von der Datenstruktur, die die Glyphe verwendet. Wenn seine untergeordneten Elemente in einer verknüpften Liste gespeichert werden, wäre ein Zeiger in die Liste effizienter. In Abschnitt 2.8 werden wir eine bessere Lösung für das Indizierungsproblem sehen, wenn wir die Dokumentanalyse diskutieren. 11IsMisspelled implementiert den Rechtschreibalgorithmus, den wir hier nicht näher erläutern werden, weil wir ihn unabhängig vom Design von Lexi gemacht haben. Wir können verschiedene Algorithmen unterstützen, indem wir SpellingChecker unterklassigen; Alternativ können wir das Strategiemuster (315) (wie wir es bei der Formatierung in Abschnitt 2.3 getan haben), anwenden, um verschiedene Rechtschreibprüfungsalgorithmen zu unterstützen. Die Beziehung zwischen Window und WindowImp ist ein Beispiel für das Bridge (151)-Muster. Die Absicht hinter Bridge ist es, separate Klassenhierarchien zu ermöglichen, auch wenn sie sich unabhängig entwickeln. Unsere Entwurfskriterien haben uns dazu bewogen, zwei separate Klassenhierarchien zu erstellen, eine, die die logische Vorstellung von Fenstern unterstützt, und eine andere für die Erfassung verschiedener Implementierungen von Fenstern. Das Bridge-Muster ermöglicht es uns, unsere logischen Fensterabstraktionen zu pflegen und zu verbessern, ohne fenstersystemabhängigen Code zu berühren, und umgekehrt. Der Zweck der Beschreibung besteht darin, eine Person, einen Ort, ein Ereignis oder eine Handlung neu zu erstellen, zu erfinden oder visuell darzustellen, damit der Leser sich das, was beschrieben wird, vorstellen kann. Es basiert stark auf sensorischen Details: was wir durch unsere fünf Sinne erleben.

Lexis Befehle sind eine Anwendung des Befehlsmusters (233), das beschreibt, wie eine Anforderung gekapselt wird. Das Befehlsmuster schreibt eine einheitliche Schnittstelle zum Ausgeben von Anforderungen vor, mit der Sie Clients für die Verarbeitung verschiedener Anforderungen konfigurieren können. Die Schnittstelle schützt Clients von der Implementierung der Anforderung. Ein Befehl kann alle, Teile oder keine implementierung der Anforderung an andere Objekte delegieren. Dies ist perfekt für Anwendungen wie Lexi, die zentralisierten Zugriff auf Funktionen in der gesamten Anwendung verstreut bieten müssen. Das Muster beschreibt auch Rückgängig- und Wiederholungsmechanismen, die auf der grundlegenden Befehlsschnittstelle basieren. Wir können der Komposition einen Rahmen hinzufügen, indem wir sie unterklassen, um eine BorderedComposition-Klasse zu ergeben. Oder wir können eine Scrolling-Schnittstelle auf die gleiche Weise hinzufügen, um eine ScrollableComposition zu ergeben. Wenn wir sowohl Bildlaufleisten als auch einen Rahmen wollen, können wir eine BorderedScrollableComposition usw. erstellen.

Im Extremfall erhalten wir eine Klasse für jede mögliche Kombination von Verzierungen, eine Lösung, die schnell undurchführbar wird, wenn die Vielfalt der Verzierungen wächst.