Ich beantworte Ihre Frage mit einer Frage; Als Sie heute Morgen zur Arbeit fuhren (ich nehme an, Sie haben es tatsächlich getan), war es Ihnen wichtig, wie der Motor die Ventile öffnete, um Kraftstoff-Luft-Gemische einzulassen, und diese dann zündete? Nein, es ist dir egal, wie der Motor deines Autos funktioniert, wenn du die Straße runter fährst. Es ist dir wichtig, dass es funktioniert .
Angenommen, eines Tages funktioniert Ihr Auto nicht mehr. Startet nicht, wirft eine Rute, bricht einen Gürtel, pflügt sich unverschuldet unverschuldet in diese Betonbarriere, während Sie gerade eine SMS geschrieben haben. Jetzt brauchen Sie ein neues Auto (zumindest vorübergehend). Interessiert es Sie genau, wie dieses neue Auto funktioniert? Nein. Was Sie interessiert, ist erstens, dass es funktioniert und zweitens, dass Sie die gleichen Kenntnisse und Fähigkeiten nutzen können, mit denen Sie Ihr altes Auto gefahren haben, um das neue zu fahren. Idealerweise sollte es Ihnen so erscheinen, als ob sich an dem Auto, das Sie fahren, nichts geändert hat. Realistisch sollte die Art und Weise, wie dieses neue Auto funktioniert, so wenig "Überraschungen" wie möglich bereiten.
Diese Grundprinzipien sind das Kernprinzip der Verkapselung und Abstraktion. Das Wissen darüber, wie ein Objekt das tut, was es tut, sollte keine Voraussetzung dafür sein, es zu verwenden, um das zu tun, was es tut. Selbst bei der Computerprogrammierung werden die Details der elektrischen Pfade in der CPU, in der Ihr Programm ausgeführt wird, hinter mindestens einem halben Dutzend Schichten von E / A-Anweisungen, Treibern, Betriebssystemsoftware und Laufzeit abstrahiert. Viele sehr erfolgreiche Softwareentwickler schreiben perfekt guten Code, ohne sich einmal Gedanken über die genaue Hardwarearchitektur oder sogar das Betriebssystem zu machen, mit dem er ausgeführt wird. Mich eingeschlossen.
Das Verbergen von Kapseln / Informationen ermöglicht es der Mentalität, "sich nicht darum zu kümmern, wie es funktioniert, sich nur darum zu kümmern, dass es funktioniert". Ihr Objekt sollte offenlegen, was für den Verbraucher nützlich ist, und zwar auf eine Weise, die der Verbraucher leicht konsumieren kann. Zurück in der realen Welt bedeutet dies nicht, dass ein Auto dem Benutzer keine Informationen über das Innenleben geben sollte, oder dass das Auto dem Benutzer nur die grundlegendsten Funktionen wie Zündung, Lenkrad, und Pedale. Alle Autos haben Tachometer und Kraftstoffanzeigen, Drehzahlmesser, Idiotlichter und anderes Rückgespräch. Praktisch alle Autos haben auch Schalter für verschiedene unabhängige Subsysteme wie Scheinwerfer, Blinker, Radio, Sitzverstellung usw. Einige Autos ermöglichen eine ziemlich esoterische Benutzereingabe, wie die Empfindlichkeit des Sperrdifferentials. In allen Fällen, wenn Sie genug wissen, Sie können es öffnen und ändern, damit es auf etwas andere Weise funktioniert. Aber in den meisten Fällen sollte der Benutzer möglicherweise nicht in der Lage sein, die Kraftstoffpumpen direkt und unabhängig von der Kabine aus zu steuern. Vielleicht, nur vielleicht, sollte der Benutzer nicht in der Lage sein, seine Bremslichter zu aktivieren, ohne das Bremspedal tatsächlich zu betätigen?
Abstraktion erlaubt die "das ist nicht das gleiche wie das, aber weil sie beide X sind, kann ich sie wie ich jede X-Mentalität verwenden." Wenn Ihr Objekt eine Abstraktion erbt oder implementiert, sollten Ihre Konsumenten erwarten, dass Ihre Implementierung dasselbe oder ein ähnliches Ergebnis wie andere bekannte Implementierungen der Abstraktion liefert. Ein Toyota Camry und ein Ford Fusion sind beide "Autos". Als solche verfügen sie über einen gemeinsamen Satz erwarteter Funktionen, beispielsweise ein Lenkrad. Drehen Sie ihn gegen den Uhrzeigersinn, das Auto fährt nach links. Drehen Sie es im Uhrzeigersinn, das Auto fährt nach rechts. Sie können in den USA in jedes Auto einsteigen und erwarten, dass das Auto ein Lenkrad und mindestens zwei Pedale hat, von denen das rechte das "Car Go" -Pedal und das mittlere das "Car Stop" -Pedal ist .
Eine Folge der Abstraktion ist die "Theorie des geringsten Erstaunens". Wenn Sie sich für eine Probefahrt ans Steuer eines neuen Autos setzen, das Lenkrad im Uhrzeigersinn drehen und das Auto nach links drehen, sind Sie, gelinde gesagt, ziemlich erstaunt. Sie würden den Händler beschuldigen, einen POS verkauft zu haben, und würden sich wahrscheinlich keinen seiner Gründe anhören, warum das neue Verhalten "besser" ist als das, was Sie gewohnt sind, oder wie gut dieses Verhalten "dokumentiert" ist oder wie " transparent "ist die Steuerung. Obwohl dieses neue Auto und alle anderen, die Sie gefahren sind, immer noch "Autos" sind, müssen Sie beim Fahren dieses Autos einige grundlegende Konzepte ändern, wie ein Auto gefahren werden soll, um das neue Auto erfolgreich zu fahren. Das ist in der Regel eine schlechte Sache, und dies geschieht nur, wenn das neue Paradigma einen intuitiven Vorteil bietet. Vielleicht ist die Hinzufügung von Sicherheitsgurten ein gutes Beispiel; Vor 50 Jahren stiegen Sie gerade ein und gingen, aber jetzt müssen Sie sich anschnallen. Der intuitive Vorteil besteht darin, dass Sie nicht durch die Windschutzscheibe oder in den Beifahrersitz steigen, wenn Sie einen Unfall haben. Sogar dann widerstanden Fahrer; Viele Autobesitzer schnitten die Sicherheitsgurte aus dem Auto, bis Gesetze verabschiedet wurden, die ihre Verwendung vorschrieben.