# Suche Buch zu Design Patterns vornehmlich "visitor patt



## Gcraft (3. Jan 2008)

Hallo,

ich habe mir die 2 kurzen tutorials auf java forum angeschaut doch hätte noch gerne weiterführende lektüre, um das ganze mehr zu verstehen...

Ich suche daher ein Buch in dem auch das visitor pattern bzw. Besucher muster ^^ erklärt usw. wird. Hat mir da jemand einen Tip?

Vielen Dank im Voraus!


----------



## JavaAdam (3. Jan 2008)

Die Bibel in dem Bereich: Design Patterns von Gamma, Helm, Johnson, Vlissides

Ein anderes gutes Buch: Heading First - Design Patterns von Eric Freeman, Elisabeth Freeman, und Kathy Sierra


----------



## maki (3. Jan 2008)

Wenn du die Bibel von der GoF schon hast, dann ist "Entwurfsmuster anwenden" von John Vlissides (einer der GoF) eine gute Weiterführung, speziell auf das Visitor Pattern wird sehr genau eingegangen.


----------



## Gcraft (3. Jan 2008)

maki hat gesagt.:
			
		

> Wenn du die Bibel von der GoF schon hast, dann ist "Entwurfsmuster anwenden" von John Vlissides (einer der GoF) eine gute Weiterführung, speziell auf das Visitor Pattern wird sehr genau eingegangen.





> Die Bibel in dem Bereich: Design Patterns von Gamma, Helm, Johnson, Vlissides



ich nehme an diese ist die deutsche ausgabe der Bible über design patterns: http://www.amazon.de/Entwurfsmuster...=sr_1_5?ie=UTF8&s=books&qid=1199365120&sr=1-5

Ich möchte eigentlich schon ein deutsches Buch um das ganze besser zu verstehen, doch ist die Übersetzung wirlich so schlecht?


----------



## maki (3. Jan 2008)

Die Namen der Muster in der deutschen Übersetzung (hab keine andere) sind etwas verwirrend, "Erbauer", "Fliegengewicht", "Befehl", "Zustand", etc. pp., während man normalerweise (und vor allem in Internet) auf die englischen Begriffe stösst.

Ansonsten hab ich keine Probleme damit, und diese 23 Namen hat man auch schnell in Deutsch und Englisch gelernt


----------



## Gcraft (3. Jan 2008)

also ich tendiere zu diesen beiden:

http://www.amazon.de/Entwurfsmuster...=sr_1_1?ie=UTF8&s=books&qid=1199365535&sr=1-1

und das als weiterführung: http://www.amazon.de/Entwurfsmuster...=sr_1_1?ie=UTF8&s=books&qid=1199365654&sr=1-1

was meint ihr? Ist halt in deutsch  :wink:


----------



## maki (3. Jan 2008)

Wie gesagt, ich hab beide, finde beide gut, auch auf deutsch.


----------



## Gcraft (3. Jan 2008)

ok beide bestellt bei amazon jetzt bin ich ein fuffie los ;-)


----------



## Hilefoks (3. Jan 2008)

Ich habe sowohl "Entwurfsmuster von Kopf bis Fuß" als auch "Entwurfsmuster . Elemente wiederverwendbarer objektorientierter Software".

Das erstere ist ein Buch das sehr nett zu lesen ist. Es ist didaktisch extrem gut gemacht. Also von mir eine Empfehlung für alle die mit Design Patterns noch nicht wirklich was zu tun hatten und zum Teil auch erst einmal an den Sinn und Zweck eines bestimmten Patterns herangeführt werden müssen.
Die gute Didaktik dieses Buches ist aber gleichzeitig sein größter Nachteil, den als Nachschlagewerk eignet es sich nur bedingt.
Fazit: Perfekt für die ersten Schritte im Bereich Design Patterns wenn man bereits erste Gehversuche mit Java absolviert hat. Für andere Sprachen als Einsteigerbuch oder für fortgeschrittene Programmierer als Nachschlagewerk aber ungeeignet.

Das zweite ist dann eher für den fortgeschrittenen Programmierer, was auch schon die gewählte Sprache für die Beispiele zeigt. Das Buch zeigt kurz auf worum es bei dem entsprechenden Pattern geht (Zweck, Motivation, Anwendbarkeit, UML Klassen- und e.v Zustands -diagramm). Dann folgt ein Implementierungsbeispiel in C++.
Es wird in diesem Buch, anders als bei "...von Kopf bis Fuß", nicht von einem Design-Problem auf ein Design-Pattern geschlossen. Daher sollte der Leser bei diesem Buch eher wissen was er eigentlich möchte und/oder aus einem UML Klassendiagramm ableiten können ob ein enstsprechendes Pattern für seine Ziele nutzbar ist.
Fazit: Als Einsteiger/Lehrbuch eher ungeeignet - als Nachschlagewerk für fortgeschrittene Programmierer (nicht nur für C++ Programmierer) wirklich sehr gut. 

MfG,
Hilefoks


----------



## GCraft (15. Jan 2008)

So habe mal in beiden Büchern gestöbert doch vermisse ich für Beuscher Muster praktische Anwendungsfälle, kennt da jemand etwas mit link evtl? wäre super, danke!


----------



## maki (15. Jan 2008)

GCraft hat gesagt.:
			
		

> So habe mal in beiden Büchern gestöbert doch vermisse ich für Beuscher Muster praktische Anwendungsfälle, kennt da jemand etwas mit link evtl? wäre super, danke!


Das ist sehr seltsam, in meiner Ausgabe von "Entwurfsmuster anwenden" sind ganze Kapitel dem Visitor Pattern gewidmet.

Vielleicht erzählst du uns, wo du das Visitor Pattern anwenden möchtest, auf ein Composite?


----------



## GCraft (15. Jan 2008)

Entwurfsmuster anwenden: seite 84

Entwurfsmuster von Kopf bis Fuss ganze hinten 2 seiten

In beiden Büchern steht nichts von konkreten Anwendungen und es gibts keinen Übungscode der einen praktischen Fall abdeckt,  das finde ich sehr schlecht  maki!


----------



## GCraft (15. Jan 2008)

das ist noch das Klassendiagramm das ich erstellt habe zu bestehendem code:


----------



## GCraft (15. Jan 2008)

Da die Klasse Kreis, Dreieck und Quadrat keine abstrakte Oberklasse haben z.B. Figur gibts hier auch keine Ableitung, denn auf wikipedia gibts auch ein Klassendiagramm mit einer Implementierung von einem Element doch dieses Element halte ich für überflüssig bzw mir reichen die konkreten Elemente wie class Kreis oder class Dreieck etc..





worin siehst du den vorteil der abstrakten Oberklasse Figur ?


----------



## maki (15. Jan 2008)

GCraft hat gesagt.:
			
		

> Entwurfsmuster anwenden: seite 84


Seite  34-40, 84-91, 111 und kurz noch mal auf Seite 142 erwähnt.
Sorry, aber ich verstehe diesen Punkt deiner Kritik nicht ganz...



			
				GCraft hat gesagt.:
			
		

> Entwurfsmuster von Kopf bis Fuss ganze hinten 2 seiten


Das war auch nicht mein Tipp. 



			
				GCraft hat gesagt.:
			
		

> In beiden Büchern steht nichts von konkreten Anwendungen und es gibts keinen Übungscode der einen praktischen Fall abdeckt,  das finde ich sehr schlecht  maki!


Übungscode ist da, aber eben in C++.
"Echte" Muster sind Sprachunabhängig, das andere sind Idiome.
Desweegen sind "echte" Muster auch immer etwas abstrakt, konkrete Implementierungen gibt es viele, die Frage ist ob man diese Muster auch erkennt.
Naja, ich hoffe du kannst trotzdem moch etwas Gefallen an "Entwurfsmuster anwenden" finden.

Nun zu deinen Diagrammen.

Warum sollte Kreis, Quadrat(sollte das nicht eher Rechteck sein?) und Dreieck nicht ein gemeinsames Interface (zB "Visitable" ) implementieren, welches die accept Methode definiert?
Es muss nicht immer eine abstrakte Oberklasse sein.

Wenn eine Klasse ein Interface implentiert, geht sie einerseits einen Vertrag ein, andereseits sieht (!) man gleich (sowohl im Diagramm und als auch im Code), dass es da eine Beziehung gibt, zB sind leere Interfaces sind auch nicht unüblich, nennt sich "Marker".


----------



## GCraft (15. Jan 2008)

Hast du mir bitte ein lebensnahes Anwendungsfeld für Visitor pattern?

Wie sollte es Rechteck sein? 

Danke dir schon mal ;-)


----------



## maki (17. Jan 2008)

Ein Quadrat ist auch nix anderes als ein Rechteck, zwar ein spezielles, aber meist bauchen wir nicht zu Unterscheiden, oder fällt dir ein Beispiel ein wo es Sinn ergibt? 

http://www.javaworld.com/javaworld/javatips/jw-javatip98.html
http://www.ibm.com/developerworks/java/library/j-diag0115.html
http://userpages.umbc.edu/~tarr/dp/lectures/Visitor.pdf

Google hat noch mehr Beispiele, Visitor mit Composite ist wirklich geil, speziell wenn die visit Methode einen boolean zurückgibt um damit zu zeigen ob die Child Elemente auch besucht werden sollen oder es reicht, wie gesagt aber nur im Zusammenhang mit Composite.


----------

