Preferred method of contact:

.NET Best Practices and Design Patterns



Course Number



3 Days

PDF Add to WishList

Gain the skills needed to solve real-world software programming problems to quickly deliver reliable applications that realize the quality goals of Agile development. In this training course, you will identify and apply the most modern of design patterns and architectures available for .NET – from lazy singletons to asynchronous adapters. Following a "separation of concerns" approach, write C# code that is much more maintainable, flexible and resilient.

You Will Learn How To

  • Solve complex programming problems using design patterns
  • Deliver bug-free code using test-driven development in Visual Studio
  • Create layered architectures for reusability and to eliminate functional duplication
  • Apply the S.O.L.I.D. principles for better class design

Important Course Information

  • Requirements

    • Programming experience at the level of:
    • You should have experience:
      • Working with Visual Studio
      • Using object-oriented concepts
      • Building .NET applications in Visual Basic, C#, or C++
  • Software

    • This course uses Visual Studio 2017, but is useful to those using an earlier version
  • Course Outline

    • Simplifying Complex Programming with Proven Design Patterns

    Applying simple interfaces to intricate algorithms

    • Unifying interfaces from subsystems for ease of use and reusability
    • Implementing the Facade pattern

    Varying functionality by programming to interfaces

    • Creating abstractions to enhance application adaptability and flexibility
    • Exploiting the Strategy pattern

    Extending object behaviour dynamically

    • Increasing functionality without impacting existing code
    • Composing objects with the Decorator pattern

    Achieving reuse and flexibility

    • Eliminating code duplication by outlining an algorithm
    • Employing the Template Method pattern

    Interfacing incompatible classes

    • Transforming an interface to add value to existing code
    • Harnessing the Adapter pattern
    • Applying Test–Driven Development Techniques

    Automating unit testing

    • Shortening development cycles with automated tests
    • Eliminating regression errors with reusable tests

    Integrating testing and coding

    • Applying the test–first programming practice
    • Generating immediate red–green feedback for increased code quality and shortened feature development cycles
    • Organising, coordinating and running test cases
    • Isolating a class test environment with the Mock–Object pattern for reliable and repeatable testing
    • Tracking the Red–Green–Refactor rhythm for feedback

    Refactoring code to improve design

    • Improving design with behaviour preserving refactorings
    • Eliminating code duplication by refactoring to patterns
    • Architecting a Layered Application

    Designing the application architecture

    • Layering architectures for reusability, durability and scalability
    • Decoupling object creation with the Factory pattern
    • Preserving object identity with the Identity Map pattern

    Programming application tiers

    • Isolating UI layers with the MVC and MVVM patterns
    • Organising state–rich applications with the State pattern
    • Restructuring database tables without impacting code

    Modelling a business area

    • Liberating rich Business Object Models from database structures using the Domain Model pattern
    • Mapping rich Business Objects to database tables with the Data Mapper pattern
    • Collapsing Business Object hierarchies with the Inheritance Mapper pattern
    • Exploiting declarative programming in Microsoft Entity Framework to implement Data Mapping classes
    • Applying Best Practices

    Organising and implementing business logic

    • Managing Persistence Ignorant Entity types with Entity Framework
    • Manipulating groups of Entities with business logic classes

    Applying S.O.L.I.D. principles of class design

    • Single Responsibility
    • Open–Closed
    • Liskov Substitution
    • Interface Segregation
    • Dependency Inversion
    • Automating Repetitive Tasks

    Easing data access code

    • Reducing database access code by exploiting Entity Navigation Properties
    • Eliminating database update code with Entity change tracking

    Enhancing application code

    • Automating design reviews with FxCop and Code analyser
    • Reducing User Interface code with Data Binding
    Show complete outline
    Show Less

    Convenient Ways to Attend This Instructor-Led Course

    Hassle-Free Enrolment: No advance payment required to reserve your seat.
    Tuition Fee due 30 days after you attend your course.

    In the Classroom

    Live, Online

    Private Team Training

    In the Classroom — OR — Live, Online

    Tuition Fee — Standard: £2095  

    13 - 15 Nov ( 3 Days)
    9:00 AM - 4:30 PM GMT
    London / Online (AnyWare) London / Online (AnyWare) Reserve Your Seat

    12 - 14 Feb ( 3 Days)
    9:00 AM - 4:30 PM GMT
    London / Online (AnyWare) London / Online (AnyWare) Reserve Your Seat

    10 - 12 Jun ( 3 Days)
    9:00 AM - 4:30 PM BST
    London / Online (AnyWare) London / Online (AnyWare) Reserve Your Seat

    AFTERNOON START: Attend these live courses online via Anyware

    4 - 6 Sep ( 3 Days)
    2:00 PM - 9:30 PM BST
    Herndon, VA / Online (AnyWare) Herndon, VA / Online (AnyWare) Reserve Your Seat

    16 - 18 Oct ( 3 Days)
    2:00 PM - 9:30 PM BST
    New York / Online (AnyWare) New York / Online (AnyWare) Reserve Your Seat

    18 - 20 Mar ( 3 Days)
    1:00 PM - 8:30 PM GMT
    Herndon, VA / Online (AnyWare) Herndon, VA / Online (AnyWare) Reserve Your Seat

    15 - 17 Apr ( 3 Days)
    2:00 PM - 9:30 PM BST
    New York / Online (AnyWare) New York / Online (AnyWare) Reserve Your Seat

    Show all dates
    Show fewer dates

    Guaranteed to Run

    When you see the "Guaranteed to Run" icon next to a course event, you can rest assured that your course event — date, time, location — will run. Guaranteed.

    Private Team Training

    Enrolling at least 3 people in this course? Consider bringing this (or any course that can be custom designed) to your preferred location as a private team training.

    For details, call 0800 282 353 or Click here »

    This event has been added to your cart.

    Tuition Fee


    In Classroom or



    Private Team Training

    Contact Us »

    Course Tuition Fee Includes:

    After-Course Instructor Coaching
    When you return to work, you are entitled to schedule a free coaching session with your instructor for help and guidance as you apply your new skills.

    After-Course Computing Sandbox
    You'll be given remote access to a preconfigured virtual machine for you to redo your hands-on exercises, develop/test new code, and experiment with the same software used in your course.

    Free Course Exam
    You can take your Learning Tree course exam on the last day of your course or online any time after class.


    Training Hours

    Standard class hours:
    9:00 a.m. - 4:30 p.m.

    Last day class hours:
    9:00 a.m. - 3:30 p.m.

    Free Course Exam – Last Day:
    3:30 p.m. - 4:30 p.m.

    Each class day:
    Informal discussion with instructor about your projects or areas of special interest:
    4:30 p.m. - 5:30 p.m.

    AFTERNOON START class hours:
    2:00 p.m. - 9:30 p.m.

    Last day class hours:
    2:00 p.m. - 8:30 p.m.

    Free Course Exam – Last Day:
    8:30 p.m. - 9:30 p.m.

    Each class day:
    Informal discussion with instructor about your projects or areas of special interest
    9:30 p.m. - 10:30 p.m.

    “Our .NET Best Practices instructor was fantastic! He taught using the material as a scaffold and reference, but he brought his own experiences to bear. I would enjoy learning from him again”.

    - P. Alegret, Senior Software Engineer
    American Public University System

    Chat Now

    Please Choose a Language

    Canada - English

    Canada - Français