[ascoders] Re: AW: Interfaces & implements

  • From: Ralf Siegel <ralf@xxxxxxxxxxx>
  • To: ascoders@xxxxxxxxxxxxx
  • Date: Mon, 14 Jul 2003 12:17:03 +0200


sieht interessant aus, ist aber (für mich) eher ne wochenendlektüre ;-)...

deshalb hab ich den Link auch schnell noch Sonntag abend losgeschickt ;o)


es geht um interface patterns oder was?

ja, auch. Ein Adapter oder eine Facade verändern z.B. so eine Schnittstelle und werden deshalb oft als 'Interface Patterns' schub-la-duiert. Es geht aber eher um die Definition und vor allem um die Einhaltung dieser definierten Schnittstelle von allen Beteiligten (ala Steckdosen-Hersteller <-> Geräte-Hersteller).


In dem Beispiel mit dem Auto sagt dir etwa dein Kollege:

"Jan, du baust jetzt ein Auto in ActionScript. Wie du das machst ist mir völlig schnurz, Hauptsache ich kann später mit der Joystick-Steuerung Gas geben, bremsen und lenken."

Dann setzt ihr euch hin und überlegt euch so eine Schnittstelle:

________________________________________________________

_global.IGuidanceSystem = function()
{
};

IGuidanceSystem.prototype.speedUp = function() {};

IGuidanceSystem.prototype.slowDown = function() {};

IGuidanceSystem.prototype.turnRight = function() {};

IGuidanceSystem.prototype.turnLeft = function() {};

________________________________________________________

Dein Kollege bastelt daraufhin die Joystick-Steuerung, ruft 'blind' obige Methoden auf und kann sich darauf verlassen, dass die Kutsche am Ende auch fährt, weil du die Methoden oben genau so implementiert hast, wie abgemacht. Damit du in der Hektik auch die Bremse nicht vergisst, erinnert dich die 'implements' Methode daran, dass du noch nicht nach Hause gehen darfst ;o)

Car.implements(IGuidanceSystem);

Und was noch viel besser ist: Man kann die Dinge jederzeit um diese Schnittstelle herum austauschen -> Stichwort: Wiederverwendung. Dein Kollege geht etwa eine Woche später zu Lola und sagt: "Lola, wir sollen bis morgen früh ein 'Lola rennt' Spiel für *piep* machen - meine Joystick-Steuerung funktioniert wie geschmiert und hat obige Schnittstelle. Auf geht's."

Runner.implements(IGuidanceSystem);

Schöne Woche :o)

ralf ...


------------------------------------------------------ Archiv : //www.freelists.org/archives/ascoders/ Optionen : //www.freelists.org/list/ascoders ------------------------------------------------------

Other related posts: