[ascoders] AW: Re: AW: Interfaces & implements

  • From: "Jursa, Jan (init)" <Jan.Jursa@xxxxxxx>
  • To: "'ascoders@xxxxxxxxxxxxx'" <ascoders@xxxxxxxxxxxxx>
  • Date: Mon, 14 Jul 2003 12:45:35 +0200

das ist wirklich ne super sache !
gerade was die wiederverwendung angeht.
ein ordentlich gestricktes interface lässt sich doch wie components
handhaben,oder?

ich bastel mir diesmal ein flugzeug (wie originell :-). da ich weiss wie das
interface aussieht, konstruiere ich immer mit blick auf meine
schnittstellen.
dann ziehe ich einfach die IGuidanceSystem-component aus der ascoders-lib
und droppe sie auf mein flugzeug. fertig.

schnell noch ne rechnung schreiben und ab an den see... :-)

grüsse,
jan

ps: du kannst wirklich gut erklären






-----Ursprüngliche Nachricht-----
Von: Ralf Siegel [mailto:ralf@xxxxxxxxxxx] 
Gesendet: Montag, 14. Juli 2003 12:17
An: ascoders@xxxxxxxxxxxxx
Betreff: [ascoders] Re: AW: Interfaces & implements



>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
------------------------------------------------------
------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: