Common Design Patterns



       Steve Smith
       @ardalis | ardalis.com
       Telerik
http://flic.kr/p/4MEeVn
http://flic.kr/p/8XgqKu
http://flic.kr/p/6StgW5
http://flic.kr/p/6UpMt9
http://geekandpoke.typepad.com/geekandpoke/2011/04/design-patterns-are-still-useful.html
Actual Usage   http://twtpoll.com/r/t7jzrx
(Of course there are many others!)
















Source: http://csharpindepth.com/Articles/General/Singleton.aspx

    
    




           Shameless Plug:
           But why would you
    
        Telerik JustMock can be
        intentionally write code
         usedcan mocktest with
         you to only and test
        certainSingletons tools?
                 premium

    



http://flic.kr/p/6spkwo







    
    
    












    






    
“new” creates tight coupling
                         between classes




http://flic.kr/p/aN4Zv





    
    
    



    
    
Compile Time

          Runtime


        User Interface

    
    



    
    
          Database
Compile Time

        Runtime


    User Interface





     Helper Class





      Database
Compile Time

                                Runtime

                   User Interface



           Core              Infrastructure
        IFooRepository      SqlFooRepository

    

    
                     Database

    
    



    



    







    
    
    







http://flic.kr/p/5Yb5i








    
    
    




               Pending




    Archived             Published
http://flic.kr/p/vGpC2



    



    



    
    
    





Design Patterns in Action

CODE











    











Common design patterns (migang 16 May 2012)

Editor's Notes

  • #3 General, reusable solutions to common problemsNot a complete, finished solutionA template, recipe, or approach to solving certain problemsEach has a specific name, so we can discuss common elements of design using a common vocabulary
  • #4 Learning anything – a musical chord, a martial arts technique, etc.Zero: You used a what? Never heard of it.Awakening:Wow, I just learned how XYZ pattern can improve my design. I’m not really sure where it would work in my code, but I’m definitely looking.Overzealous:I totally “get” the XYZ pattern; I’m adding it everywhere I can shoehorn it into my code. My design’s gonna be better now, for sure!Mastery: In response to some specific design pain points, the XYZ pattern was a logical next step and was achieved through a simple refactoring.
  • #5 Design pattern names provide placeholders or complex abstractions and sets of refactorings. Consider the difference between:We have some tight coupling to the database here. We can probably fix it if we apply these refactorings;extract an interface, extract a method, Extract a class,Replace local with parameterORLet’s apply the Repository pattern to fix it.
  • #11 It’s possible for the new Singleton(); line to be called more than once.
  • #29 http://en.wikipedia.org/wiki/File:Proxy_concept_en.svg
  • #40 Apply patterns via refactoring,Not Big Design Up Front