Das #1 Pattern in C# erklärt 🏆 Singleton Design Pattern

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ม.ค. 2025

ความคิดเห็น • 31

  • @CodingmitJannick
    @CodingmitJannick  5 หลายเดือนก่อน

    ☑ Die C# Checkliste findest du hier:
    codingmitjannick.de

  • @GuRuGeorge03
    @GuRuGeorge03 5 หลายเดือนก่อน +11

    Bei großen Projekten ist das Singleton ein klassisches Anti Pattern, sollte man bedenken. Gründe & Beispiele gibts zu Hauf im Internet zu finden

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน

      Ja, ich habe mir bereits überlegt dazu ein Video zu machen. Also Anti-Patterns am Beispiel Singleton 🙂

    • @supersoon5
      @supersoon5 4 หลายเดือนก่อน

      Wollte ich auch sagen. Bei größeren Projekten sind IoC Frameworks besser.....

  • @miore580
    @miore580 5 หลายเดือนก่อน +1

    Danke für das Video ohne Foo und Bar zu benutzten. ;)

  • @ROTOBAfilms
    @ROTOBAfilms 5 หลายเดือนก่อน

    Schönes Video, sehr gut erklärt!!!

  • @ProgrammierungLeichtGemacht
    @ProgrammierungLeichtGemacht 5 หลายเดือนก่อน +1

    Super Video! Genau so sollte es sein, keine Static-Klassen. 🙂
    Doch ich verwende das Singelton-Pattern ausschließlich über einen IoC-Container, denn dort habe ich alle Registrierungen an einem Ort. Und es ist ganz easy, ob eine Klasse im Nachhinein nur eine Instanz haben soll oder nicht, das kann ich in der Registrierungsfunktion bequem einstellen (falls sich das Design noch ändern sollte).

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน +1

      Super Input! Ich werde zum Thema IoC-Container bzw. DI generell mal ein Video erstellen.
      VG

    • @ProgrammierungLeichtGemacht
      @ProgrammierungLeichtGemacht 5 หลายเดือนก่อน

      @@CodingmitJannick Gerne. Perfekt! Das sind wichtige Themen, wie z.B. auch Unit-Tests. Wird leider bei Desktop-Anwendungen noch nicht überall eingesetzt, bzw. ist noch kein Standard (ist zumindest meine Erfahrung).
      Bei Web- und Mobil-Anwendungen ist das zum Glück schon Standard.

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน +1

      @@ProgrammierungLeichtGemacht Du meinst vor allem WPF/Forms, oder?

    • @ProgrammierungLeichtGemacht
      @ProgrammierungLeichtGemacht 5 หลายเดือนก่อน

      @@CodingmitJannick Ja, genau. Beides.
      Und ich kriege es immer wieder mit, dass diese Konzepte nicht jedem bekannt sind und einige verstehen den Sinn dahinter nicht, auch weil es zuerst einmal kurzfristig mehr Aufwand bedeutet (angefangen bei DI und auch Interfaces als Design- und Architekturwerkzeug, sowie UnitTests). In der Web-/Mobile-Welt hat sich das schon etabliert, die gängigen Frameworks bringen das schon von Haus aus mit.
      Deswegen finde ich auch solche Videos wichtig, die dann Themen aus den Bereichen BestPractises, DesignPatterns, Clean Code, Design- und Architekturkonzepte erläutern und erklären, wie bei dir. Vielleicht kommen noch mehr davon. ;-) - ich fände es super 🙂
      Du strukturierst die Themen in deinen Videos sehr gut und erklärst es verständlich mit tollen Beispielen. 🙂

  • @jensboller5929
    @jensboller5929 5 หลายเดือนก่อน +2

    Könntest du mal ne Blazor Serie machen wäre echt cool

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน

      Klaro, habe auch vor dazu einen ganzen Kurs zu machen 🙂Inkl. TH-cam Serie

    • @jensboller5929
      @jensboller5929 5 หลายเดือนก่อน +2

      @@CodingmitJannick der Kurs is jetzt schon gekauft, bitte aber in deutsch, in deutsch gibt es keine keine Tutorials zu Blazer.

  • @m0lDaViA
    @m0lDaViA 5 หลายเดือนก่อน +1

    Geiles Video! Ergibt das eigentlich auch beim mvvm Pattern Sinn?

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน

      Auf jeden Fall 🙂Wo auch immer Services/Manager bereitgestellt werden müssen, ergibt das Singleton Pattern Sinn.
      VG

    • @m0lDaViA
      @m0lDaViA 5 หลายเดือนก่อน

      @@CodingmitJannick Nun, ich meine für Viewmodels, die dauerhaft verwendet werden.

  • @TheSkycro
    @TheSkycro 5 หลายเดือนก่อน +4

    Also, das Pattern an sich ist ziemlich verständlich erklärt.
    Aber, was nicht erklärt wurde:
    Warum ist es nah zu immer ein Anti-Pattern? (sogar das im Video gezeigte Beispiel)
    Was sind die Nachteile?
    Was sind die Alternativen?
    Warum sollte man meistens sein Design überdenken, wenn man einen Singleton verwenden "muss"?
    Gerade wenn Anfänger Singletons verwenden, schadetet es mehr, als es einem bringt.
    Edit: Ich rede von den SIngletons in diesem Video. Nicht von Singletons in einem IoC Container.

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน

      Guter Blickwinkel, ich denke, dass es für fast jedes Pattern Sinn macht mal darüber zu sprechen wo die Pitfalls sind und ob sich dahinter ein Anti-Pattern verbirgt. Merke ich mir 🙂
      Bei diesem Pattern muss ich sagen, dass es gerade bei kleineren Konsolen- oder Desktopanwendungen doch schon nützlich sein kann.
      Bei größeren Webanwendungen würde man ja einen IoC container verwenden, da wüsste ich also nicht wieso jemand überhaupt das alleinstehende Singleton Pattern verwenden würde.
      Danke 👍

    • @hisf1shness
      @hisf1shness 5 หลายเดือนก่อน

      Bei kleinen Projekten ist absolut nichts dagegen einzuwenden. Wenn die Codebase aber größer wird und man auf einmal merkt, dass man doch nicht eine Instanz von etwas braucht sondern doch mehrere, darf man den ganzen Kram umbauen und hat sich mit nem Singleton.getInstance() etwas in die Ecke manövriert. Abhilfe schafft da üblicherweise IoC/DependencyInjection oder irgendeine "verwaltende" Stelle, die Instanzen erstellt und verteilt. Dazu vergessen weniger erfahrene Entwickler:innen gerne mal das locking, was zu richtig nervigen und seltenen bugs führen kann.

    • @TheSkycro
      @TheSkycro 5 หลายเดือนก่อน

      @@hisf1shness das nichts dagegen spricht würde ich nicht sagen 🤔 aber es ist relativ egal, da man ihn Verhältnismäßig schnell umbauen kann, wenn er Probleme macht. 🤔
      Klar, bei Helferlein, die man sich in paar Minuten hin Pfuscht, weil man es kann (.. also weil man zu faul ist etwas ständig manuell zu machen.. 😂) dann ist sowieso alles an Programmierregeln und best practice egal 😂 solche "Projekte" hat jeder zu genüge 😂

  • @xykflo
    @xykflo 5 หลายเดือนก่อน +1

    Ich frage mich, warum die Klasse selbst nicht static ist?

    • @CodingmitJannick
      @CodingmitJannick  5 หลายเดือนก่อน +1

      Sehr gute Frage! Wie gesagt, bei Pattern geht es um Clean Code und OOP Prinzipien. Hier gibt es eine komplette Debatte zu deiner Frage:
      stackoverflow.com/questions/2969599/why-use-singleton-instead-of-static-class
      Ich selber verwende lieber das Pattern weil es sich nahtloser einfügt und nicht im Global Namespace ist.
      VG :-)

    • @xykflo
      @xykflo 5 หลายเดือนก่อน +1

      @@CodingmitJannick Danke für den Link 🙂 Und gutes Video übrigens.

  • @DJone4one
    @DJone4one 5 หลายเดือนก่อน +1

    Hatte letztens bei einem Coding Stream von Yunus von DA mit einem geschattet, der sich gewundert hat, dass man Design Patterns nachcoden kann. Da frag ich mich eher, warum nicht?

  • @David-tz7jn
    @David-tz7jn 5 หลายเดือนก่อน +1

    Mit Java oder C# wird man zum CEO of Boilerplate.

    • @fluchtfahrzeug123
      @fluchtfahrzeug123 5 หลายเดือนก่อน +2

      Darum nutzt man einfach Kotlin, wo für ein Objekt mit einer einzigen Instanz logischerweise erst gar keine Klasse erstellt wird (keyword object statt class)

    • @hisf1shness
      @hisf1shness 5 หลายเดือนก่อน

      Java mit springboot und lombok ist ganz anders als java vor 15 Jahren...

  • @LogicException
    @LogicException 4 หลายเดือนก่อน

    In diesem Video das #1 Pattern, bei uns in der Firma der #1 Grund wieso der Merge-Request abgelehnt wird. Und das im Video nicht auf die Gefahren bei diesem Pattern hingewiesen wird, ist fast schon fahrlässig m.M.n.

    • @CodingmitJannick
      @CodingmitJannick  4 หลายเดือนก่อน

      Hi, danke für die Anmerkung, das Singleton Pattern hat einige Pitfalls. Ich erwähne aber auch nicht, dass man diese Pattern immer verwenden sollte, sondern nur, dass das Pattern das wohl bekannteste und immer noch häufig (sogar sehr häufig) verwendet wird.
      Unabhängig davon plane ich bereits Videos zum Thema Anti-Patterns. Darunter dann auch das Singleton Pattern.
      VG