Companies Home Search Profile

Design Patterns in C# and .NET

Focused View

Dmitri Nesteruk

20:22:02

64 View
  • 001 Introduction.mp4
    07:12
  • 001 Overview.mp4
    01:16
  • 002 SOLID.SRP.cs.txt
  • 002 Single Responsibility Principle.mp4
    07:30
  • 003 Open-Closed Principle.mp4
    17:24
  • 003 SOLID.OCP.cs.txt
  • 003 ocp.zip
  • 004 Liskov Substitution Principle.mp4
    06:37
  • 004 SOLID.LSP.cs.txt
  • 005 Interface Segregation Principle.mp4
    06:33
  • 005 SOLID.ISP.cs.txt
  • 006 Dependency Inversion Principle.mp4
    11:11
  • 006 SOLID.DIP.cs.txt
  • 007 Summary.mp4
    05:25
  • 001 Gamma Categorization.mp4
    03:37
  • 002 Overview.mp4
    01:43
  • 003 Life Without Builder.mp4
    03:34
  • 004 Builder.mp4
    09:06
  • 004 Creational.Builder.Builder.cs.txt
  • 005 Fluent Builder.mp4
    01:16
  • 006 Creational.Builder.BuilderInheritance.cs.txt
  • 006 Fluent Builder Inheritance with Recursive Generics.mp4
    12:37
  • 007 Creational.Builder.StepwiseBuilder.Program.cs.txt
  • 007 Stepwise Builder.mp4
    09:00
  • 008 Creational.Builder.FunctionalBuilder.cs.txt
  • 008 Functional Builder.mp4
    10:20
  • 009 Creational.Builder.BuilderFacets.cs.txt
  • 009 Faceted Builder.mp4
    11:11
  • 010 ExerciseAnswers.cs.txt
  • 010 Summary.mp4
    00:58
  • 001 Overview.mp4
    02:22
  • 002 Creational.Factories.Factory.cs.txt
  • 002 Point Example.mp4
    04:38
  • 003 Factory Method.mp4
    05:03
  • 004 Asynchronous Factory Method.mp4
    05:02
  • 005 Factory.mp4
    02:59
  • 006 Creational.Factories.BulkReplacement.Program.cs.txt
  • 006 Object Tracking and Bulk Replacement.mp4
    12:01
  • 007 Inner Factory.mp4
    05:42
  • 008 Abstract Factory.mp4
    11:21
  • 008 Creational.Factories.AbstractFactory.cs.txt
  • 009 Abstract Factory and OCP.mp4
    09:52
  • 010 ExerciseAnswers.cs.txt
  • 010 Summary.mp4
    01:05
  • 001 Overview.mp4
    01:59
  • 002 Creational.Prototype.ICloneableIsBad.cs.txt
  • 002 ICloneable is Bad.mp4
    07:37
  • 003 Copy Constructors.mp4
    03:55
  • 003 Creational.Prototype.CopyConstructors.cs.txt
  • 004 Explicit Deep Copy Interface.mp4
    02:34
  • 005 Creational.Prototype.Inheritance.cs.txt
  • 005 Prototype Inheritance.mp4
    20:24
  • 006 Copy Through Serialization.mp4
    09:05
  • 006 Creational.Prototype.CopyThroughSerialization.cs.txt
  • 007 ExerciseAnswers.cs.txt
  • 007 Summary.mp4
    01:08
  • 001 Overview.mp4
    02:44
  • 002 Creational.Singleton.Singleton.cs.txt
  • 002 Singleton Implementation.mp4
    08:40
  • 002 capitals.txt
  • 003 Testability Issues.mp4
    07:22
  • 004 Creational.Singleton.SingletonInDI.cs.txt
  • 004 Singleton in Dependency Injection.mp4
    08:58
  • 005 Creational.Singleton.Monostate.cs.txt
  • 005 Monostate.mp4
    03:46
  • 006 Creational.Singleton.PerThreadSingleton.cs.txt
  • 006 Per-Thread Singleton.mp4
    04:25
  • 007 Ambient Context.mp4
    12:26
  • 007 Creational.Singleton.AmbientContext.cs.txt
  • 008 ExerciseAnswers.cs.txt
  • 008 Summary.mp4
    02:15
  • external-links.txt
  • 001 Overview.mp4
    02:36
  • 002 Structural.Adapter.NoCaching.cs.txt
  • 002 VectorRaster Demo.mp4
    08:35
  • 003 Adapter Caching.mp4
    06:04
  • 003 Structural.Adapter.WithCaching.cs.txt
  • 004 Generic Value Adapter.mp4
    25:18
  • 004 Structural.Adapter.GenericValueAdapter.cs.txt
  • 004 genericvalueadapter.zip
  • 005 Adapter in Dependency Injection.mp4
    09:07
  • 005 AutofacDemos.Adapters.cs.txt
  • 006 ExerciseAnswers.cs.txt
  • 006 Summary.mp4
    01:10
  • 001 Overview.mp4
    02:50
  • 002 Bridge.mp4
    09:50
  • 002 Structural.Bridge.Bridge.cs.txt
  • 002 conventionalbridge.zip
  • 003 ExerciseAnswers.cs.txt
  • 003 Summary.mp4
    01:33
  • 001 Overview.mp4
    01:53
  • 002 Geometric Shapes.mp4
    07:33
  • 002 Structural.Composite.GeometricShapes.cs.txt
  • 003 Neural Networks.mp4
    08:00
  • 003 Structural.Composite.NeuralNetworks.cs.txt
  • 004 Composite Specification.mp4
    05:58
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:11
  • 001 Overview.mp4
    02:34
  • 002 Custom String Builder.mp4
    06:19
  • 002 Structural.Decorator.CodeBuilder.cs.txt
  • 003 Adapter-Decorator.mp4
    06:33
  • 003 Structural.Decorator.AdapterDecorator.cs.txt
  • 004 Multiple Inheritance with Interfaces.mp4
    08:40
  • 004 Structural.Decorator.MultipleInheritance.cs.txt
  • 005 Multiple Inheritance with Default Interface Members.mp4
    07:44
  • 006 Dynamic Decorator Composition.mp4
    07:39
  • 006 Structural.Decorator.Decorator.cs.txt
  • 007 Detecting Decorator Cycles.mp4
    22:02
  • 007 Structural.Decorator.CycleDetection.cs.txt
  • 008 Static Decorator Composition.mp4
    09:30
  • 009 AutofacDemos.Decorators.cs.txt
  • 009 Decorator in Dependency Injection.mp4
    06:11
  • 010 ExerciseAnswers.cs.txt
  • 010 Summary.mp4
    02:02
  • 001 Overview.mp4
    03:09
  • 002 Facade.mp4
    07:59
  • 003 Structural.Facade.Exercise.cs.txt
  • 003 Summary.mp4
    01:25
  • external-links.txt
  • 001 Overview.mp4
    05:24
  • 002 Repeating User Names.mp4
    12:29
  • 002 Structural.Flyweight.Users.cs.txt
  • 003 Structural.Flyweight.TextFormatting.cs.txt
  • 003 Text Formatting.mp4
    08:53
  • 004 ExerciseAnswers.cs.txt
  • 004 Summary.mp4
    00:58
  • 001 Overview.mp4
    03:12
  • 002 Protection Proxy.mp4
    03:11
  • 002 Structural.Proxy.ProtectionProxy.cs.txt
  • 003 PropertyProxy.cs.txt
  • 003 Property Proxy.mp4
    09:24
  • 004 Structural.Proxy.ValueProxy.cs.txt
  • 004 Value Proxy.mp4
    12:05
  • 005 Composite Proxy SoAAoS.mp4
    11:30
  • 005 Structural.Proxy.SoACompositeProxy.cs.txt
  • 006 Composite Proxy with Array-Backed Properties.mp4
    06:42
  • 006 Structural.Proxy.CompositeProxy.cs.txt
  • 007 Dynamic Proxy for Logging.mp4
    11:50
  • 007 Structural.Proxy.DynamicProxy.cs.txt
  • 008 Proxy vs. Decorator.mp4
    01:27
  • 009 Structural.Proxy.ViewModel.cs.txt
  • 009 ViewModel.mp4
    08:42
  • 010 Bit Fragging.mp4
    25:04
  • 010 Structural.Proxy.BitFragging.cs.txt
  • 011 Structural.Proxy.Exercise.cs.txt
  • 011 Summary.mp4
    00:55
  • 001 Overview.mp4
    03:33
  • 002 Command Query Separation.mp4
    01:28
  • 003 Behavioral.ChainOfResponsibility.MethodChain.cs.txt
  • 003 Method Chain.mp4
    12:15
  • 004 Behavioral.ChainOfResponsibility.BrokerChain.cs.txt
  • 004 Broker Chain.mp4
    13:50
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:18
  • 001 Overview.mp4
    03:06
  • 002 Behavioral.Command.Command.cs.txt
  • 002 Command.mp4
    07:47
  • 003 Undo Operations.mp4
    06:05
  • 004 Behavioral.Command.CompositeCommand.cs.txt
  • 004 Composite Command.mp4
    12:11
  • 004 compositecommand.zip
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:09
  • 001 Overview.mp4
    04:00
  • 002 Behavioral.Interpreter.Handmade.cs.txt
  • 002 Handmade Interpreter Lexing.mp4
    07:52
  • 003 Handmade Interpreter Parsing.mp4
    12:05
  • 004 ANTLR.mp4
    02:44
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:03
  • 001 Overview.mp4
    01:42
  • 002 Behavioral.Iterator.TreeTraversal.cs.txt
  • 002 Iterator Object.mp4
    11:49
  • 003 Iterator Method.mp4
    06:57
  • 004 Iterators and Duck Typing.mp4
    04:06
  • 005 ArrayBackedProperties.cs.txt
  • 005 Array-Backed Properties.mp4
    05:51
  • 006 ExerciseAnswers.cs.txt
  • 006 Summary.mp4
    01:28
  • 001 Overview.mp4
    01:13
  • 002 Behavioral.Mediator.ChatRoom.cs.txt
  • 002 Chat Room.mp4
    10:42
  • 002 chatroom.zip
  • 003 Event Broker.mp4
    15:30
  • 003 RxEventBroker.cs.txt
  • 004 Behavioral.Mediator.MediatrDemo.Program.cs.txt
  • 004 Introduction to MediatR.mp4
    13:20
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:16
  • external-links.txt
  • 001 Overview.mp4
    01:41
  • 002 Behavioral.Memento.Memento.cs.txt
  • 002 Memento.mp4
    06:04
  • 003 Behavioral.Memento.UndoRedo.cs.txt
  • 003 Undo and Redo.mp4
    07:15
  • 004 Memento for Interop.mp4
    06:38
  • 005 Memento.ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    01:17
  • 001 Overview.mp4
    01:58
  • 002 Behavioral.NullObject.NullObject.cs.txt
  • 002 Null Object.mp4
    08:53
  • 003 Behavioral.NullObject.NullObjectPattern.NullObjectSingleton.cs.txt
  • 003 Null Object Singleton.mp4
    05:08
  • 004 Dynamic Null Object.mp4
    06:11
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    00:41
  • 001 Overview.mp4
    02:11
  • 002 Behavioral.Observer.Events.cs.txt
  • 002 Observer via the event Keyword.mp4
    07:09
  • 003 Behavioral.Observer.WeakEventPattern.cs.txt
  • 003 Weak Event Pattern.mp4
    08:25
  • 004 Behavioral.Observer.ObserverInterfaces.cs.txt
  • 004 Observer via Special Interfaces.mp4
    18:28
  • 005 Observable Collections.mp4
    09:45
  • 005 ObserverPattern.cs.txt
  • 006 Behavioral.Observer.BidirectionalObserver.cs.txt
  • 006 Bidirectional Observer.mp4
    14:48
  • 007 Behavioral.Observer.PropertyDependencies.cs.txt
  • 007 Property Dependencies.mp4
    13:30
  • 008 Behavioral.Observer.ContainerWireup.cs.txt
  • 008 Declarative Event Subscriptions with Interfaces.mp4
    27:08
  • 009 ExerciseAnswers.cs.txt
  • 009 Summary.mp4
    00:56
  • external-links.txt
  • 001 Overview.mp4
    03:09
  • 002 Behavioral.State.Classic.cs.txt
  • 002 Classic Implementation.mp4
    12:32
  • 003 Behavioral.State.Handmade.cs.txt
  • 003 Handmade State Machine.mp4
    06:44
  • 003 phonecall.zip
  • 004 Behavioral.State.SwitchBased.cs.txt
  • 004 Switch-Based State Machine.mp4
    06:38
  • 005 Behavioral.State.SwitchExpressions.cs.txt
  • 005 Switch Expressions.mp4
    08:49
  • 006 Behavioral.State.Stateless.cs.txt
  • 006 State Machine with Stateless.mp4
    05:37
  • 007 ExerciseAnswers.cs.txt
  • 007 Summary.mp4
    01:00
  • 001 Overview.mp4
    01:50
  • 002 Behavioral.Strategy.Dynamic.cs.txt
  • 002 Dynamic Strategy.mp4
    08:25
  • 003 Behavioral.Strategy.Static.cs.txt
  • 003 Static Strategy.mp4
    04:07
  • 004 Behavioral.Strategy.ComparisonStrategies.cs.txt
  • 004 Equality and Comparison Strategies.mp4
    07:41
  • 005 ExerciseAnswers.cs.txt
  • 005 Summary.mp4
    00:26
  • 001 Overview.mp4
    01:30
  • 002 Behavioral.TemplateMethod.TemplateMethod.cs.txt
  • 002 Template Method.mp4
    07:23
  • 003 Behavioral.TemplateMethod.FunctionalTemplateMethod.cs.txt
  • 003 Functional Template Method.mp4
    03:38
  • 004 ExerciseAnswers.cs.txt
  • 004 Summary.mp4
    00:45
  • 001 Overview.mp4
    04:46
  • 002 Behavioral.Visitor.Intrusive.cs.txt
  • 002 Intrusive Visitor.mp4
    04:41
  • 003 Behavioral.Visitor.Reflective.cs.txt
  • 003 Reflective Visitor.mp4
    09:10
  • 004 Behavioral.Visitor.Classic.cs.txt
  • 004 Classic Visitor (Double Dispatch).mp4
    10:21
  • 004 classicvisitor.zip
  • 005 Behavioral.Visitor.Transformer.Program.cs.txt
  • 005 Reductions and Transforms.mp4
    14:24
  • 006 Behavioral.Visitor.Dynamic.cs.txt
  • 006 Dynamic Visitor via the DLR.mp4
    07:11
  • 007 Acyclic Visitor.mp4
    12:01
  • 007 Behavioral.Visitor.Acyclic.cs.txt
  • 007 acyclicvisitor.zip
  • 008 Behavioral.Visitor.Exercise.cs.txt
  • 008 Summary.mp4
    01:09
  • 001 Creational Paterns Summary.mp4
    04:41
  • 002 Structural Patterns Summary.mp4
    06:13
  • 003 Behavioral Patterns Summary.mp4
    08:48
  • 004 End of Course.mp4
    00:54
  • 001 DuckTypingMixins.cs.txt
  • 001 Duck Typing Mixins.mp4
    09:53
  • 002 An ASCII C# String.mp4
    13:58
  • 002 Structural.Adapter.str.cs.txt
  • 003 Continuation Passing Style.mp4
    11:07
  • 004 LIoC.cs.txt
  • 004 Local Inversion of Control.mp4
    17:43
  • 005 DI Container and Event Broker Integration.mp4
    10:11
  • 006 Beyond the Elvis Operator.mp4
    14:47
  • 006 Maybe.cs.txt
  • 007 CQRS and Event Sourcing.mp4
    26:42
  • external-links.txt
  • 001 Overview.mp4
    05:10
  • 002 Builder.mp4
    04:57
  • 002 Functional.FunctionalDesignPatternDemos.Builder.fs.txt
  • 003 Decorator.mp4
    04:39
  • 003 Functional.FunctionalDesignPatternDemos.Decorator.fs.txt
  • 004 Factory.mp4
    08:15
  • 004 Functional.FunctionalDesignPatternDemos.Factory.fs.txt
  • 005 Functional.FunctionalDesignPatternDemos.Interpreter.fs.txt
  • 005 Interpreter.mp4
    09:58
  • 006 Functional.FunctionalDesignPatternDemos.Strategy.fs.txt
  • 006 Strategy.mp4
    05:38
  • 007 Functional.FunctionalDesignPatternDemos.TemplateMethod.fs.txt
  • 007 Template Method.mp4
    10:06
  • 008 Summary.mp4
    02:55
  • Description


    Discover the modern implementation of design patterns with C# and .NET

    What You'll Learn?


    • Recognize and apply design patterns
    • Refactor existing designs to use design patterns
    • Reason about applicability and usability of design patterns

    Who is this for?


  • Beginner and experienced developers
  • Anyone interested in design patterns
  • What You Need to Know?


  • Good understanding of C#
  • Familiarity with latest C# features
  • Good understanding of object-oriented design principles
  • More details


    Description

    Course Overview

    This course provides a comprehensive overview of Design Patterns in C# and .NET from a practical perspective. This course in particular covers patterns with the use of:

    • The latest versions of C# and the .NET framework
    • Use of modern programming approaches: dependency injection, reactive programming and more
    • Use of modern developer tools such as ReSharper
    • Discussions of pattern variations and alternative approaches

    This course provides an overview of all the Gang of Four (GoF) design patterns as outlined in their seminal book, together with modern-day variations, adjustments, discussions of intrinsic use of patterns in the language.

    What are Design Patterns?

    Design Patterns are reusable solutions to common programming problems. They were popularized with the 1994 book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, John Vlissides, Ralph Johnson and Richard Helm (who are commonly known as a Gang of Four, hence the GoF acronym).

    The original book was written using C++ and Smalltalk as examples, but since then, design patterns have been adapted to every programming language imaginable: C#, Java, PHP and even programming languages that aren't strictly object-oriented, such as JavaScript.

    The appeal of design patterns is immortal: we see them in libraries, some of them are intrinsic in programming languages, and you probably use them on a daily basis even if you don't realize they are there.

    What Patterns Does This Course Cover?

    This course covers all the GoF design patterns. In fact, here's the full list of what is covered:

    • SOLID Design Principles: Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle and Dependency Inversion Principle
    • Creational Design Patterns: Builder, Factories (Factory Method and Abstract Factory), Prototype and Singleton
    • Structrural Design Patterns: Adapter, Bridge, Composite, Decorator, Façade, Flyweight and Proxy
    • Behavioral Design Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Null Object, Observer, State, Strategy, Template Method and Visitor

    Who Is the Course For?

    This course is for .NET/C# developers who want to see not just textbook examples of design patterns, but also the different variations and tricks that can be applied to implement design patterns in a modern way. For example, the introduction of the DLR allows us to use an ImpromptuObject, so that our DynamicObject exposes any interface we desire. This allows for dynamic programming, and many design patterns are presented in terms of their static and DLR-based variations.

    Presentation Style

    This course is presented as a (very large) series of live demonstrations being done in Microsoft Visual Studio. Most demos are single-file, so you can download the file attached to the lesson and run it in Visual Studio, Visual Studio Code, Rider or another IDE of your choice.

    This course does not use UML class diagrams; all of demos are live coding. I use Visual Studio, various NuGet packages, R# unit test runner and even dotMemoryUnit.


    Who this course is for:

    • Beginner and experienced developers
    • Anyone interested in design patterns

    User Reviews
    Rating
    0
    0
    0
    0
    0
    average 0
    Total votes0
    Focused display
    Dmitri Nesteruk
    Dmitri Nesteruk
    Instructor's Courses
    Dmitri is a quant, developer, book author and course author. His interests lie in software development and integration practices in the areas of computation, quantitative finance and algorithmic trading. His technological interests include C# and C++ programming as well high-performance computing using technologies such as CUDA and FPGAs. He has been a C# MVP since 2009.
    Students take courses primarily to improve job-related skills.Some courses generate credit toward technical certification. Udemy has made a special effort to attract corporate trainers seeking to create coursework for employees of their company.
    • language english
    • Training sessions 173
    • duration 20:22:02
    • English subtitles has
    • Release Date 2023/08/21