Course Content
.NET Best Practices and Design Patterns Training
    About Lesson

    Module 1: 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 behavior 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

    Module 2: 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
    • Organizing, 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 behavior preserving refactorings
    • Eliminating code duplication by refactoring to patterns

    Module 3: 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
    • Organizing state–rich applications with the State pattern
    • Restructuring database tables without impacting code

    Modeling 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

    Module 4: Applying Best Practices

    Organizing 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

    Module 5: 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 analyzer
    • Reducing User Interface code with Data Binding