| 1 | Introduction | 07:13 |
| 2 | Overview | 01:17 |
| 3 | Single Responsibility Principle | 07:31 |
| 4 | Open-Closed Principle | 17:25 |
| 5 | Liskov Substitution Principle | 06:38 |
| 6 | Interface Segregation Principle | 06:34 |
| 7 | Dependency Inversion Principle | 11:12 |
| 8 | Summary | 05:26 |
| 9 | Gamma Categorization | 03:38 |
| 10 | Overview | 01:44 |
| 11 | Life Without Builder | 03:35 |
| 12 | Builder | 09:07 |
| 13 | Fluent Builder | 01:17 |
| 14 | Fluent Builder Inheritance with Recursive Generics | 12:38 |
| 15 | Stepwise Builder | 09:01 |
| 16 | Functional Builder | 10:21 |
| 17 | Faceted Builder | 11:12 |
| 18 | Summary | 00:59 |
| 19 | Overview | 02:23 |
| 20 | Point Example | 04:39 |
| 21 | Factory Method | 05:04 |
| 22 | Asynchronous Factory Method | 05:03 |
| 23 | Factory | 03:00 |
| 24 | Object Tracking and Bulk Replacement | 12:02 |
| 25 | Inner Factory | 05:43 |
| 26 | Abstract Factory | 11:22 |
| 27 | Abstract Factory and OCP | 09:53 |
| 28 | Summary | 01:06 |
| 29 | Overview | 02:00 |
| 30 | ICloneable is Bad | 07:38 |
| 31 | Copy Constructors | 03:56 |
| 32 | Explicit Deep Copy Interface | 02:35 |
| 33 | Prototype Inheritance | 20:25 |
| 34 | Copy Through Serialization | 09:06 |
| 35 | Summary | 01:09 |
| 36 | Overview | 02:45 |
| 37 | Singleton Implementation | 08:41 |
| 38 | Testability Issues | 07:23 |
| 39 | Singleton in Dependency Injection | 08:59 |
| 40 | Monostate | 03:47 |
| 41 | Per-Thread Singleton | 04:26 |
| 42 | Ambient Context | 12:27 |
| 43 | Summary | 02:16 |
| 44 | Overview | 02:37 |
| 45 | Vector/Raster Demo | 08:36 |
| 46 | Adapter Caching | 06:05 |
| 47 | Generic Value Adapter | 25:19 |
| 48 | Adapter in Dependency Injection | 09:08 |
| 49 | Summary | 01:11 |
| 50 | Overview | 02:51 |
| 51 | Bridge | 09:51 |
| 52 | Summary | 01:34 |
| 53 | Overview | 01:54 |
| 54 | Geometric Shapes | 07:34 |
| 55 | Neural Networks | 08:01 |
| 56 | Composite Specification | 05:59 |
| 57 | Summary | 01:12 |
| 58 | Overview | 02:35 |
| 59 | Custom String Builder | 06:20 |
| 60 | Adapter-Decorator | 06:34 |
| 61 | Multiple Inheritance with Interfaces | 08:41 |
| 62 | Multiple Inheritance with Default Interface Members | 07:45 |
| 63 | Dynamic Decorator Composition | 07:40 |
| 64 | Detecting Decorator Cycles | 22:03 |
| 65 | Static Decorator Composition | 09:31 |
| 66 | Decorator in Dependency Injection | 06:12 |
| 67 | Summary | 02:03 |
| 68 | Overview | 03:10 |
| 69 | Façade | 08:00 |
| 70 | Summary | 01:26 |
| 71 | Overview | 05:25 |
| 72 | Repeating User Names | 12:30 |
| 73 | Text Formatting | 08:54 |
| 74 | Summary | 00:59 |
| 75 | Overview | 03:13 |
| 76 | Protection Proxy | 03:12 |
| 77 | Property Proxy | 09:25 |
| 78 | Value Proxy | 12:06 |
| 79 | Composite Proxy: SoA/AoS | 11:31 |
| 80 | Composite Proxy with Array-Backed Properties | 06:43 |
| 81 | Dynamic Proxy for Logging | 11:51 |
| 82 | Proxy vs. Decorator | 01:28 |
| 83 | ViewModel | 08:43 |
| 84 | Bit Fragging | 25:05 |
| 85 | Summary | 00:56 |
| 86 | Overview | 03:34 |
| 87 | Command Query Separation | 01:29 |
| 88 | Method Chain | 12:16 |
| 89 | Broker Chain | 13:51 |
| 90 | Summary | 01:19 |
| 91 | Overview | 03:07 |
| 92 | Command | 07:48 |
| 93 | Undo Operations | 06:06 |
| 94 | Composite Command | 12:12 |
| 95 | Summary | 01:10 |
| 96 | Overview | 04:01 |
| 97 | Handmade Interpreter: Lexing | 07:53 |
| 98 | Handmade Interpreter: Parsing | 12:06 |
| 99 | ANTLR | 02:45 |
| 100 | Summary | 01:04 |
| 101 | Overview | 01:43 |
| 102 | Iterator Object | 11:50 |
| 103 | Iterator Method | 06:58 |
| 104 | Iterators and Duck Typing | 04:07 |
| 105 | Array-Backed Properties | 05:52 |
| 106 | Summary | 01:29 |
| 107 | Overview | 01:14 |
| 108 | Chat Room | 10:43 |
| 109 | Event Broker | 15:31 |
| 110 | Introduction to MediatR | 13:21 |
| 111 | Summary | 01:17 |
| 112 | Overview | 01:42 |
| 113 | Memento | 06:05 |
| 114 | Undo and Redo | 07:16 |
| 115 | Memento for Interop | 06:39 |
| 116 | Summary | 01:18 |
| 117 | Overview | 01:59 |
| 118 | Null Object | 08:54 |
| 119 | Null Object Singleton | 05:09 |
| 120 | Dynamic Null Object | 06:12 |
| 121 | Summary | 00:42 |
| 122 | Overview | 02:12 |
| 123 | Observer via the 'event' Keyword | 07:10 |
| 124 | Weak Event Pattern | 08:26 |
| 125 | Observer via Special Interfaces | 18:29 |
| 126 | Observable Collections | 09:46 |
| 127 | Bidirectional Observer | 14:49 |
| 128 | Property Dependencies | 13:31 |
| 129 | Declarative Event Subscriptions with Interfaces | 27:09 |
| 130 | Summary | 00:57 |
| 131 | Overview | 03:10 |
| 132 | Classic Implementation | 12:33 |
| 133 | Handmade State Machine | 06:45 |
| 134 | Switch-Based State Machine | 06:39 |
| 135 | Switch Expressions | 08:50 |
| 136 | State Machine with Stateless | 05:38 |
| 137 | Summary | 01:01 |
| 138 | Overview | 01:51 |
| 139 | Dynamic Strategy | 08:26 |
| 140 | Static Strategy | 04:08 |
| 141 | Equality and Comparison Strategies | 07:42 |
| 142 | Summary | 00:27 |
| 143 | Overview | 01:31 |
| 144 | Template Method | 07:24 |
| 145 | Functional Template Method | 03:39 |
| 146 | Summary | 00:46 |
| 147 | Overview | 04:47 |
| 148 | Intrusive Visitor | 04:42 |
| 149 | Reflective Visitor | 09:11 |
| 150 | Classic Visitor (Double Dispatch) | 10:22 |
| 151 | Reductions and Transforms | 14:25 |
| 152 | Dynamic Visitor via the DLR | 07:12 |
| 153 | Acyclic Visitor | 12:02 |
| 154 | Summary | 01:10 |
| 155 | Creational Paterns Summary | 04:42 |
| 156 | Structural Patterns Summary | 06:14 |
| 157 | Behavioral Patterns Summary | 08:49 |
| 158 | End of Course | 00:55 |
| 159 | An ASCII C# String | 13:59 |
| 160 | Continuation Passing Style | 11:08 |
| 161 | Local Inversion of Control | 17:44 |
| 162 | DI Container and Event Broker Integration | 10:12 |
| 163 | Beyond the Elvis Operator | 14:48 |
| 164 | CQRS and Event Sourcing | 26:43 |
| 165 | Overview | 05:11 |
| 166 | Builder | 04:58 |
| 167 | Decorator | 04:40 |
| 168 | Factory | 08:16 |
| 169 | Interpreter | 09:59 |
| 170 | Strategy | 05:39 |
| 171 | Template Method | 10:07 |
| 172 | Summary | 02:56 |