Setzt ihr Design Pattern BEWUST ein?



  • was hat man davon? wenn man Pattern unsbewßt implementiert, wieso sollte man sie dann kennen???



  • Weil sehende Hühner wesentlich mehr Körner finden als blinde. 😃



  • Weil es auch eine Reihe von Anti-Patterns gibt, die man eben tunlichst vermeiden sollte. Außerdem hilft es die Patterns zu kennen, damit man nicht zufällig ein unpassendes ausgewählt hat.

    MfG



  • Nehmen wir an man sagt euch "Programmiert eine verkettete List".

    Denkt ihr dann zuerst an das dafür notwendige Pattern, oder an eine List Klasse und Listelement klasse?^^



  • Desginer schrieb:

    Nehmen wir an man sagt euch "Programmiert eine verkettete List".

    Denkt ihr dann zuerst an das dafür notwendige Pattern, oder an eine List Klasse und Listelement klasse?^^

    Wo ist der Unterschied? 🙄



  • Desginer schrieb:

    Nehmen wir an man sagt euch "Programmiert eine verkettete List".

    Denkt ihr dann zuerst an das dafür notwendige Pattern, oder an eine List Klasse und Listelement klasse?^^

    da denke ich zuerst an schrecklichste gebilde, die ich alle schon sehen und benutzen durfte. es ist schon erstaunlich, was man bei so einer trivialen aufgabe alles falsch machen kann.

    wenn ich sowas noch selbst schreiben müsste, würde ich zuerst mal drüber nachdenken wie über die elemente iteriert werden soll. also das iterator-pattern auspacken.



  • IMHO hat die Kenntnis von Patterns 3 entscheidende Vorteile.

    1. Wenn man sich ein bischen mit Ihnen auskennt und dann beim Design überlegt
    wie man eine Aufgabe möglichst effizient lösen könnte, hat man mit etwas
    Glück in 5 minuten das richtige Pattern an der Hand und denkt keine
    Stunde über ein gutes Design nach OOP Prinzipien nach.

    2. Die allgemein bekannten Patterns sind weit verbreitet und anerkannt,
    daher kann man wenn man verschiedene Entwürfe abzustimmen hat den der Patterns
    verwendet mit weiteren argumenten gegenüber den anderen Rechtfertigen.

    3. Man schafft sich in einem Team über Patterns ein gemeinsames Vokabular an.
    Es ist schnller gesagt, Ich Designe das Modulf für bla nach dem Observer Pattern
    als anzufangen die einzelnen Klassen zu beschreiben und es treten weniger
    Misverständnisse auf.



  • Wenn man Patterns kennt, hat man nen hrößeren Wissens- und Ideenschatz mit dem man was bauen und kombinieren kann. Da muss man nicht bewust daran denken, wenn man was schon mal gesehen und/oder verwendet hat, dann ist die Lösung schon da und man muss sie nicht wieder neu ausdenken.



  • Grundsätzlich gilt als Programmierer, warum das Rad neu erfinden ?
    Warum alte Fehler wiederholen ?

    Wozu braucht man statische Variablen (z.B. LoggerString) ?
    Da nehm ich doch lieber n Singleton. Wenn man den Zugriff auf die Variable thread-safe machen will, muß man herkömmlicherweise, jeden Zugriff absichern. Mit einem Singleton hast du eine Stelle für alle Zugriffe. Ein Riesen-Vorteil !

    MVC und komplexere Code-Stücke :
    Komplexere (semant.) "Zusammenhänge", setzen sich ja wiederum aus einfacheren Patterns zusammen, wie beispielsweise MVC. Bei Design-Entscheiden streitet man auch mehr über "Patterns" als über die Implementierung.

    Gruß
    nurF



  • nurf schrieb:

    Da nehm ich doch lieber n Singleton. Wenn man den Zugriff auf die Variable thread-safe machen will, muß man herkömmlicherweise, jeden Zugriff absichern. Mit einem Singleton hast du eine Stelle für alle Zugriffe. Ein Riesen-Vorteil !

    Ein schönes Beispiel für ein Antipattern! Singletons sollten grade nicht dafür mißbraucht werden, sich den Zugriff auf ein Objekt zu erleichtern. Es verleitet dazu, ständig Singletons zu benutzen, um sich die Referenzen zu sparen und führt am Ende zu Spagetticode.



  • byto schrieb:

    nurf schrieb:

    Da nehm ich doch lieber n Singleton. Wenn man den Zugriff auf die Variable thread-safe machen will, muß man herkömmlicherweise, jeden Zugriff absichern. Mit einem Singleton hast du eine Stelle für alle Zugriffe. Ein Riesen-Vorteil !

    Ein schönes Beispiel für ein Antipattern! Singletons sollten grade nicht dafür mißbraucht werden, sich den Zugriff auf ein Objekt zu erleichtern. Es verleitet dazu, ständig Singletons zu benutzen, um sich die Referenzen zu sparen und führt am Ende zu Spagetticode.

    Dein Pattern für einen zentralen (statischen) Logger sieht wie aus ?
    Globale Variable ? 👎



  • Ich brauche kein Pattern zum Loggen, sondern benutze das Logging-Framework meiner Wahl.



  • Wenn man sich zu den 23 Design-Patterns aus dem GOF-Buch mal die Frage stellen würde: "Welches gehört nicht in die Reihe?" müsste man das mit "Singleton" beantworten 🙂 Was nicht dagegen spricht, dass es für deinen Logger das richtige ist, aber wenn das für dich die Essenz eines Design-Patterns darstellt, hast du die anderen nicht verstanden.



  • nurf schrieb:

    Dein Pattern für einen zentralen (statischen) Logger sieht wie aus ?
    Globale Variable ? 👎

    Singleton hat exakt dieselben Nachteile wie eine globale Variable. Ein Wort: Lebensdauer. Lass mal deinen Logger ein event eines anderen singletons beim programmende loggen 🙂


Anmelden zum Antworten