Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Factory Pattern Einsatz

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Zitat von tr0y Beitrag anzeigen
    das ist worst practice
    Was genau?

    Kommentar


    • #32
      Zitat von rkr Beitrag anzeigen
      Was genau?
      Die Verhinderung/Beschränkung der Aufrufe zu steuern.

      Kommentar


      • #33
        Zitat von jprangenberg Beitrag anzeigen
        Die Verhinderung/Beschränkung der Aufrufe zu steuern.
        Wenn ja, warum?
        Wenn ich zum Erzeugen von Klassen eine Factory vorgebe, deren Output geändert werden können soll, dann würde es zu Problemen führen, wenn ich die Erzeugung der Objekte nicht kontrollieren kann. Zum Beispiel wenn ich darüber den Zugriff auf das Dateisystem steuern will. Dann würde es wenig helfen, wenn ich zwar an einer zentralen Stelle auf FTP konfigurieren kann, an einigen Stellen dann aber trotzdem LocalFS genutzt wird, weil der Entwickler zu der Zeit nicht davon ausgegangen ist, dass sein Spezialkonstrukthotfix auch an anderen Stellen eingesetzt werden würde...

        Kommentar


        • #34
          Zitat von BlackScorp Beitrag anzeigen
          hast du factory verstanden?

          PHP-Code:
          abstract class BasisKlasse{}
          class 
          AndereKlasse extends BasisKlasse{}:

          class 
          KlasseFactory{
          public static function 
          create($class){
          return new 
          $class():
          }
          }

          KlasseFactory::create('AndereKlasse'); //instanz von AndereKlasse
          KlasseFactory::create('BasisKlasse'); //Exception weil basis abstract ist 
          Hast Du es denn verstanden? Das ist nämlich nur Factory Method.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar


          • #35
            Zitat von rkr Beitrag anzeigen
            Wenn ja, warum?
            Wenn ich zum Erzeugen von Klassen eine Factory vorgebe, deren Output geändert werden können soll, dann würde es zu Problemen führen, wenn ich die Erzeugung der Objekte nicht kontrollieren kann. Zum Beispiel wenn ich darüber den Zugriff auf das Dateisystem steuern will. Dann würde es wenig helfen, wenn ich zwar an einer zentralen Stelle auf FTP konfigurieren kann, an einigen Stellen dann aber trotzdem LocalFS genutzt wird, weil der Entwickler zu der Zeit nicht davon ausgegangen ist, dass sein Spezialkonstrukthotfix auch an anderen Stellen eingesetzt werden würde...
            Weil die Klasse nicht dafür verantwortlich sein darf fest zu legen wer sie instanziieren kann und wer nicht. Sowas arbeitet mit unnötigen Aufwand gegen die Wiederverwendbarkeit.
            [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

            Kommentar


            • #36
              Wenn du (rkr) es nicht fertig bringst, in einem Projektteam koordiniert zu arbeiten und mit dem Team einen gemeinsamen Pool festzulegen, der definiert, was wie gemacht wird, ist das schade...

              Ziel des Programmierens darf es ja nicht sein, alles mögliche zu verhindern, dass nicht so gedacht ist. Sondern Ziel muss es ja sein, eine API so zu dokumentieren, dass ja auch alle diese nutzen.
              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

              Kommentar


              • #37
                Zitat von nikosch Beitrag anzeigen
                Hast Du es denn verstanden? Das ist nämlich nur Factory Method.
                wieso? Factory erzeugt instanz einer klasse, oder einem typen einer klasse durch irgendwelche parameter, wie gesagt, mir sind Pattern sowieso Wayne
                apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                Kommentar


                • #38
                  Zitat von BlackScorp Beitrag anzeigen
                  wieso? Factory erzeugt instanz einer klasse, oder einem typen einer klasse durch irgendwelche parameter, wie gesagt, mir sind Pattern sowieso Wayne
                  Eine Factory Klasse hat eine factorize() Methode und gibt Objekte eines Interfaces zurück und konfiguriert diese anhand der übergebenen Konfiguration!

                  Kommentar


                  • #39
                    Zitat von jprangenberg Beitrag anzeigen
                    Eine Factory Klasse hat eine factorize() Methode und gibt Objekte eines Interfaces zurück und konfiguriert diese anhand der übergebenen Konfiguration!
                    von mir aus
                    apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                    Kommentar


                    • #40
                      Zitat von tr0y Beitrag anzeigen
                      Weil die Klasse nicht dafür verantwortlich sein darf fest zu legen wer sie instanziieren kann und wer nicht. Sowas arbeitet mit unnötigen Aufwand gegen die Wiederverwendbarkeit.
                      Wo habe ich das denn geschrieben? Ich habe lediglich geschrieben, dass etwas was nicht automatisch jedem klar sein muss, durch ein SCM-Hook abgefangen werden kann. Die Klasse selbst weiss von all dem nichts.

                      Zitat von ChristianK Beitrag anzeigen
                      Wenn du (rkr) es nicht fertig bringst, in einem Projektteam koordiniert zu arbeiten und mit dem Team einen gemeinsamen Pool festzulegen, der definiert, was wie gemacht wird, ist das schade...
                      Blah? Keine Ahnung, auf welchem Planeten du lebst... Auf meinem gehen solche Dinge schief, auch wenn sich das Team diszipliniert an Regeln hält. Denn auf meinem Planeten gibt es: "Termindruck". Der streut dann überall Ausnahmen rein.

                      Zitat von ChristianK Beitrag anzeigen
                      Ziel des Programmierens darf es ja nicht sein, alles mögliche zu verhindern, dass nicht so gedacht ist. Sondern Ziel muss es ja sein, eine API so zu dokumentieren, dass ja auch alle diese nutzen.
                      Ich empfehle dir einen Bogen um die Realität zu machen. Oder zeig mir einfach mal ein Projekt, bei dem solche Sachen auf Anhieb klappen. Der Theorie nach dürfte es sowas wie den CodeSniffer gar nicht geben...

                      Kommentar


                      • #41
                        wieso? Factory erzeugt instanz einer klasse, oder einem typen einer klasse durch irgendwelche parameter,
                        Abstract Factory (so heißt das Pattern) besteht aus Fabrikklassen und Produktklassen (die der zu erzeugenden Instanzen) und den zugehörigen Interfaces. Erst das abstrahiert den Erzugungskontext weitgehendst.
                        Factory Method sieht die Information als Teil der Fabrikklasse, in der Regel sogar als Teil der Produktklasse vor. Ersteres erzeugt eine ungünstige Abhängigkeit, zweiteres kommt mit den üblichen Problemen statischer Methoden + verstößt gegen das Single-Responsibility-Prinzip.

                        Die wichtigsten Vorteile von Abstract Factory sind für mich:
                        -Die Fabrik ist austauschbar
                        -Die Fabrikinstanz kann zentral konfiguriert werden
                        -Die Fabrikinstanz kann als Objekt abgelegt und wiederverwendet werden
                        -Die Fabrikklasse muss nicht umgeschrieben werden und ist ableitbar
                        -Die Fabrikklasse kann per Autolader geladen werden
                        -Auf Wunsch lässt sich die Fabrikinstanz als Singleton-Instanz anlegen und wiederverwenden (praktisch zum Beispiel für aufwendig zu initiierende Fabriken oder für Fabriken mit Abhängigkeiten wie Datenbankinstanzen)

                        wie gesagt, mir sind Pattern sowieso Wayne
                        Natürlich die beste Basis für eine Diskussion
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #42
                          Zitat von nikosch Beitrag anzeigen
                          Natürlich die beste Basis für eine Diskussion
                          ich wollte auch nicht Diskutieren hab eh langsam die Schnauze voll, alle erzaehlen von Tollen pattern, Deployment und den ganzen Spannenden dingen, man bewirbt sich bei einer Firma und du wirst ueber dinge abgefragt die du nur in diesem Forum gelernt hast und dann faengste an zu Arbeiten und siehst sehr viel Legacy Code und hoerst staendig "Es waere zu aufwaendig","Es wuerde sich nicht lohnen","Wir brauchen ein Meeting" .. da denkt man sich dann, wozu soll ich denn all das wissen wenn ich es sowieso nicht bei meinem Beruf einsetzen kann..

                          desswegen will ich hier mit niemanden diskutieren, werde einfach zu alt um mir die genauen feinheiten auswendig zu lernen und es irgendwann sowieso vergessen da man es nicht staendig braucht

                          nicht boese gemeint, bin einfach nur deprimiert
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                          Kommentar


                          • #43
                            Zitat von BlackScorp Beitrag anzeigen
                            und dann faengste an zu Arbeiten und siehst sehr viel Legacy Code und hoerst staendig "Es waere zu aufwaendig","Es wuerde sich nicht lohnen","Wir brauchen ein Meeting"
                            Schön zu sehen, wie die Illusionen so vor dir wegschwimmen, ne?
                            [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

                            Kommentar


                            • #44
                              Zitat von ApoY2k Beitrag anzeigen
                              Schön zu sehen, wie die Illusionen so vor dir wegschwimmen, ne?
                              ja, ich glaube, wenn man sich mit all den tollen dingen im beruf beschaeftigen moechte, muss man in ein startup, da gibt es kein legacy code, oder in ein richtig grosses unternehmen mit mehreren entwickler teams, pro team ca 10 personen. oder keine ahnung wie gesagt, habe bisher nur therie im Forum gelesen, beim privaten dingen eingesetzt und festgestellt, dass es was tolles ist, in firmen festgestellt dass es zu komplex ist :/ alles ist scheisse
                              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                              Kommentar


                              • #45
                                Man muss halt auch mal konsequent sein und sich durchsetzen. Gute Argumente gibts genug. Und Softwarewartung müsst Ihr sicher auch machen.
                                [COLOR="#F5F5FF"]--[/COLOR]
                                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                                [COLOR="#F5F5FF"]
                                --[/COLOR]

                                Kommentar

                                Lädt...
                                X